用c语言实现阶乘
时间: 2025-05-18 15:03:21 AIGC 浏览: 36
### 如何用C语言实现阶乘函数
在C语言中,可以通过多种方式实现阶乘函数。以下是两种常见的方法:迭代法和递归法。
#### 方法一:使用迭代法
通过循环结构逐步计算阶乘的结果。这种方法避免了递归调用带来的额外开销。
```c
#include <stdio.h>
unsigned long long factorial_iterative(int n) {
unsigned long long result = 1;
for (int i = 1; i <= n; ++i) {
result *= i;
}
return result;
}
int main() {
int number;
printf("Enter a positive integer: ");
scanf("%d", &number);
if (number >= 0) {
printf("Factorial of %d is %llu\n", number, factorial_iterative(number));
} else {
printf("Factorial is not defined for negative numbers.\n");
}
return 0;
}
```
此代码片段展示了如何利用`for`循环来逐层相乘得到最终结果[^3]。
#### 方法二:使用递归法
递归是一种更简洁的方法,它基于数学定义 \( n! = n \times (n-1)! \),其中\( 0! = 1 \)。
```c
#include <stdio.h>
unsigned long long factorial_recursive(int n) {
if (n == 0 || n == 1) { // Base case
return 1;
}
return n * factorial_recursive(n - 1); // Recursive call
}
int main() {
int number;
printf("Enter a positive integer: ");
scanf("%d", &number);
if (number >= 0) {
printf("Factorial of %d is %llu\n", number, factorial_recursive(number));
} else {
printf("Factorial is not defined for negative numbers.\n");
}
return 0;
}
```
上述程序实现了递归逻辑,并处理了基本情况以及输入验证[^4]。
需要注意的是,在实际应用中应考虑数据类型的溢出风险。对于较大的数值,建议采用更高精度的数据类型或者专门的大数库支持。
阅读全文
相关推荐



















