c语言用非递归函数且不用数学算法打印n的阶乘
时间: 2024-11-23 09:30:22 浏览: 9
在C语言中,计算非递归的阶乘并不需要复杂的数学算法,可以直接通过循环结构来实现。这里有一个简单的例子,使用for循环来打印n的阶乘:
```c
#include <stdio.h>
// 非递归函数计算阶乘
unsigned long long factorial(int n) {
unsigned long long result = 1; // 初始化结果为1
for (int i = 2; i <= n; ++i) {
result *= i;
}
return result;
}
int main() {
int n;
printf("请输入一个正整数: ");
scanf("%d", &n);
if (n >= 0) { // 检查输入是否合法
printf("n的阶乘是: %llu\n", factorial(n));
} else {
printf("错误:输入值必须是非负整数。\n");
}
return 0;
}
```
在这个程序中,`factorial`函数接收一个整数`n`,然后从2开始逐次乘到`n`,最终返回阶乘的结果。如果输入的n为负数,则会给出错误提示。
相关问题
c语言实现n阶阶乘的递归算法
C语言实现n阶阶乘的递归算法如下:
```c
#include <stdio.h>
int factorial(int n)
{
if (n == 0) // 当n为0时,直接返回1,递归的终止条件
return 1;
else
return n * factorial(n - 1); // 递归调用,将问题不断简化为求(n-1)阶乘
}
int main()
{
int n;
printf("请输入一个非负整数:");
scanf("%d", &n);
printf("%d的阶乘为:%d\n", n, factorial(n));
return 0;
}
```
运行此程序,用户输入一个非负整数n,程序通过递归算法计算n的阶乘值,并输出结果。这个递归函数`factorial()`是通过将问题不断简化为求(n-1)阶乘来实现的,直到问题简化到n为0时,返回1作为终止条件。
用c语言使用递归算法编写计算n!函数。
下面是使用递归算法编写计算n!函数的C语言代码:
```c
#include <stdio.h>
int factorial(int n) {
if (n == 0) {
return 1;
} else {
return n * factorial(n - 1);
}
}
int main() {
int n;
printf("请输入一个整数:");
scanf("%d", &n);
printf("%d! = %d\n", n, factorial(n));
return 0;
}
```
上述代码中,定义了一个名为`factorial`的函数,该函数接收一个整数类型的参数`n`,并返回`n`的阶乘。在函数中,首先判断`n`是否等于0,如果是,则返回1;否则,递归调用`factorial`函数计算`n-1`的阶乘,并将结果乘以`n`,最后返回这个结果。在`main`函数中,首先获取用户输入的整数`n`,然后调用`factorial`函数计算`n`的阶乘,并输出结果。
阅读全文