用C程序解决刚才的问题
时间: 2024-10-22 09:20:56 浏览: 12
设计一个C语言程序来计算数列的和
在C语言中,由于递归深度有限制以及没有内置的尾递归优化,我们可以使用循环来避免递归,更好地处理大数阶乘。这里是一个非递归的C程序来计算阶乘:
```c
#include <stdio.h>
unsigned long long factorial(int n) {
unsigned long long result = 1; // 初始化结果为1
for (int i = 2; i <= n; ++i) { // 从2开始累乘到n
result *= i;
}
return result;
}
int main() {
int n;
printf("请输入一个自然数:");
scanf("%d", &n);
if (n >= 0) { // 检查输入是否是非负整数
unsigned long long fact = factorial(n);
printf("%d的阶乘是:%llu\n", n, fact);
} else {
printf("输入错误!请输入一个非负整数。\n");
}
return 0;
}
```
此程序先接收用户输入的整数,然后计算并打印该数的阶乘。注意,如果输入非常大,可能会超出`unsigned long long`类型的范围,此时需要考虑使用更大的数据类型或者分段计算。
阅读全文