在C语言中,计算n的阶乘可以通过以下几种方法实现:
方法一:循环
```c
include
int main() {
int n, i, s = 1;
printf("请输入一个正整数: ");
scanf("%d", &n);
for (i = 1; i <= n; i++) {
s = s * i;
}
printf("%d的阶乘是: %d\n", n, s);
return 0;
}
```
方法二:递归
```c
include
long factorial(int n) {
if (n == 0) {
return 1;
} else {
return n * factorial(n - 1);
}
}
int main() {
int n;
printf("请输入一个正整数: ");
scanf("%d", &n);
printf("%d的阶乘是: %ld\n", n, factorial(n));
return 0;
}
```
方法三:使用数组存储阶乘结果并输出
```c
include
void print_factorial(int n) {
int ary = {1}; // 存储1到n的阶乘结果
int i, j = 0;
for (i = 2; i <= n; i++) {
ary[j + 1] = ary[j] + ary[j] / 10; // 计算进位
ary[j] = ary[j] % 10; // 保留余数
j++;
}
if (ary[j] != 0) {
j++;
}
for (j = j - 1; j >= 0; j--) {
printf("%d", ary[j]);
}
printf("\n");
}
int main() {
int n;
printf("请输入一个正整数: ");
scanf("%d", &n);
print_factorial(n);
return 0;
}
```
方法四:使用递归并输出结果
```c
include
long factorial(int n) {
if (n == 0) {
return 1;
} else {
return n * factorial(n - 1);
}
}
int main() {
int n;
printf("请输入一个正整数: ");
scanf("%d", &n);
printf("该数的阶乘是: %ld\n", factorial(n));
return 0;
}
```
总结
循环方法:
通过一个for循环从1到n依次求积。
递归方法:
通过函数自身调用计算阶乘。
数组方法:
使用数组存储阶乘结果并输出。
根据具体需求和输入规模,可以选择合适的方法实现n的阶乘计算。对于较大的n值,建议使用循环方法以避免递归导致的堆栈溢出问题。