c编写正整数n的阶乘
时间: 2024-10-16 21:11:05 浏览: 19
在C语言中计算一个正整数n的阶乘(Factorial),你可以使用递归或循环的方式。这里提供两种常见的实现方法:
**方法一:递归实现**
```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的阶乘
}
}
int main() {
int n;
printf("请输入一个正整数:");
scanf("%d", &n);
printf("该数的阶乘是:%llu\n", factorial(n));
return 0;
}
```
**方法二:循环实现**
```c
#include <stdio.h>
#include <stdlib.h> // 为了处理大整数
unsigned long long factorial(int n) {
unsigned long long result = 1;
for (int i = 1; i <= n; ++i) {
result *= i;
}
return result;
}
// ... 主函数部分同上
```
注意:递归版本对于大数值可能会有栈溢出的风险,而循环版本可以处理更大的数值,但效率较低。在实际应用中,如果需要考虑大数运算,可以使用专门处理大整数的库,如`<stdint.h>`或第三方库。
阅读全文