C语言怎么实现阶乘
时间: 2025-04-30 13:39:11 浏览: 21
在C语言中实现阶乘功能有多种方法,这里介绍两种常见的方法:一种是使用循环结构,另一种则是利用递归函数。下面是这两种方法的具体实现方式。
### 方法一:使用for循环
这种方法通过迭代的方式来逐步累积结果,直到达到所需的阶层数值为止。这是一个非常直观且易于理解的做法。
```c
#include <stdio.h>
unsigned long long factorial(int n) {
unsigned long long result = 1;
for (int i = 1; i <= n; ++i) {
result *= i;
}
return result;
}
int main() {
int num;
printf("请输入一个非负整数: ");
scanf("%d", &num);
if(num >= 0){
printf("%d 的阶乘为 %llu\n", num, factorial(num));
} else{
printf("输入错误!请确保您输入的是非负整数。\n");
}
return 0;
}
```
此段代码首先定义了一个`factorial()` 函数用于接收用户提供的数值并返回相应的阶乘;然后在主程序中获取用户的输入,并调用 `factorial()` 来得到最终的结果。
### 方法二:使用递归
递归是一种更为优雅但是稍微复杂一点的方法,它基于这样一个事实——任何一个大于1的自然数n都可以写作 n * (n - 1)! 。因此可以将求解任务分解成更小规模的问题去解决。
```c
#include <stdio.h>
unsigned long long factorial_recursive(unsigned int n) {
// 基本情况:当n等于0或1时,返回1
if (n == 0 || n == 1)
return 1;
// 如果不是基本情形,则继续向下一层递归
return n * factorial_recursive(n - 1);
}
int main(){
int number ;
printf("请输入一个正整数:");
scanf("%d",&number);
if(number>=0){
printf("%d 的阶乘为 %llu \n", number,factorial_recursive(number));
}else{
printf("输入无效,请输入非负整数!");
}
阅读全文
相关推荐


















