c语言怎么写n*(n-1)*(n-2)*....*1的值
时间: 2024-09-17 11:02:52 浏览: 34
C语言第1-2章练习题.doc
在C语言中,计算n*(n-1)*(n-2)*...*1的阶乘可以使用递归或者循环的方式。这里给出递归函数的例子:
```c
#include <stdio.h>
// 定义阶乘函数,输入为整数n
long long factorial(int n) {
if (n == 0 || n == 1) { // 阶乘的基本情况,0和1的阶乘都是1
return 1;
} else {
return n * factorial(n - 1); // 递归调用自身,将问题规模缩小
}
}
int main() {
int n;
printf("请输入一个正整数:");
scanf("%d", &n);
long long result = factorial(n);
printf("n! 的值为:%lld\n", result);
return 0;
}
```
在这个程序中,用户输入一个正整数`n`,然后调用`factorial`函数计算其阶乘。注意,因为C标准库中`long long`通常能存储较大的数值以防止溢出,所以这里使用`long long`类型。
如果你对循环更感兴趣,也可以用循环来计算:
```c
#include <stdio.h>
#include <stdlib.h> // 引入exit函数用于退出循环
int main() {
int n;
printf("请输入一个正整数:");
scanf("%d", &n);
long long result = 1;
for (int i = 1; i <= n; ++i) {
result *= i;
}
printf("n! 的值为:%lld\n", result);
return 0;
}
```
阅读全文