c语言pta求N的阶乘
时间: 2025-02-14 14:09:56 浏览: 54
### C语言PTA计算N的阶乘
在C语言中,可以使用递归来实现计算N的阶乘。下面是一个完整的程序示例:
```c
#include <stdio.h>
int factorial(int n);
int main() {
int m;
printf("请输入要所求阶乘的正整数: ");
scanf("%d", &m);
printf("%d! = %d\n", m, factorial(m));
return 0;
}
int factorial(int n) {
if (n == 1) {
return 1;
} else {
return n * factorial(n - 1);
}
}
```
此代码定义了一个名为`factorial`的函数用于计算给定参数`n`的阶乘[^1]。
对于较大的数值,由于递归可能导致栈溢出或效率低下问题,在实际应用中可能更倾向于采用迭代方式来提高性能和稳定性。这里提供一种基于循环结构的替代方案:
```c
#include <stdio.h>
unsigned long long iterative_factorial(unsigned int n){
unsigned long long result = 1ULL;
while (n >= 1U) {
result *= n--;
}
return result;
}
int main(){
unsigned int number;
printf("输入一个非负整数以获取其阶乘:");
scanf("%u",&number);
printf("%u 的阶乘等于 %llu\n",number,iterative_factorial(number));
return 0;
}
```
这段代码通过while循环实现了相同的功能,并且能够处理更大的输入范围而不会遇到堆栈溢出的风险[^3]。
阅读全文
相关推荐


















