c利用while或for计算n的阶乘
时间: 2024-09-21 17:05:39 浏览: 14
在C语言中,你可以使用`while`或`for`循环来计算一个数`n`的阶乘。阶乘是所有小于等于它的正整数相乘的结果。下面是两个示例:
**使用while循环:**
```c
#include <stdio.h>
long long factorial(int n) {
if (n == 0 || n == 1) { // 阶乘的基本情况,0和1的阶乘都是1
return 1;
}
int i = 1;
long long result = 1;
while (i <= n) {
result *= i;
i++;
}
return result;
}
int main() {
int num;
printf("请输入一个非负整数:");
scanf("%d", &num);
long long fact = factorial(num);
printf("%d 的阶乘是 %lld\n", num, fact);
return 0;
}
```
**使用for循环:**
```c
#include <stdio.h>
#include <stdbool.h> // 添加这个头文件用于bool类型的使用
long long factorial(int n) {
bool base_case = (n == 0 || n == 1); // 使用布尔变量简化条件判断
long long result = 1;
for (int i = 1; i <= n && !base_case; i++) {
result *= i;
base_case = n == 0;
}
return result;
}
// 主函数和输入部分同上
```
这两个例子都实现了计算阶乘的功能,你可以根据需要选择其中一个。