如何用c语言计算阶乘
时间: 2024-12-20 08:14:23 浏览: 12
c语言 计算阶乘之和.c
在C语言中计算阶乘通常会用到递归或者循环结构。这里提供两个简单的例子:
**使用递归方法计算阶乘:**
```c
#include <stdio.h>
// 定义递归函数
unsigned long long factorial(int n) {
if (n == 0 || n == 1) // 阶乘的基本情况,0和1的阶乘都是1
return 1;
else
return n * factorial(n - 1); // 递归调用自身,n * (n-1)! = n!
}
int main() {
int number;
printf("请输入一个正整数:");
scanf("%d", &number);
printf("%d 的阶乘是 %llu\n", number, factorial(number));
return 0;
}
```
**使用循环方法计算阶乘:**
```c
#include <stdio.h>
#include <limits.h> // 引入ULLONG_MAX用于处理大数
unsigned long long factorial(int n) {
unsigned long long result = 1;
for (int i = 1; i <= n; ++i) {
result *= i;
// 检查结果是否超过最大值,防止溢出
if (result > ULLONG_MAX && i != n)
break;
}
return result;
}
int main() {
int number;
printf("请输入一个正整数:");
scanf("%d", &number);
printf("%d 的阶乘是 %llu\n", number, factorial(number));
return 0;
}
```
这两个示例都会计算用户输入的正整数的阶乘。注意递归方法可能会因为调用栈过深导致堆栈溢出,所以对于较大的数值,循环方法更为合适。
阅读全文