用c语言编写一个递归函数,接收一个非负数整数为参数,并返回该整数的阶乘(n!=n*(n-1)*(n-2)*...*1)。其中,0的阶乘为1。
时间: 2025-01-15 16:23:03 浏览: 44
好的,我可以为您编写一个用C语言实现的递归函数来计算非负整数的阶乘。以下是代码实现:
```c
#include <stdio.h>
// 递归函数计算阶乘
int factorial(int n) {
if (n == 0) {
return 1; // 0的阶乘为1
} else {
return n * factorial(n - 1); // 递归调用
}
}
int main() {
int num;
printf("请输入一个非负整数: ");
scanf("%d", &num);
if (num < 0) {
printf("错误:请输入一个非负整数。\n");
} else {
printf("%d的阶乘是: %d\n", num, factorial(num));
}
return 0;
}
```
这个程序的工作原理如下:
1. 我们定义了一个名为`factorial`的递归函数,它接受一个整数参数`n`。
2. 在函数内部,我们首先检查基本情况:如果`n`等于0,我们返回1,因为0的阶乘定义为1。
3. 如果`n`大于0,我们返回`n`乘以`factorial(n-1)`的结果,这实现了递归调用。
4. 在`main`函数中,我们提示用户输入一个非负整数。
5. 我们检查输入是否为负数。如果是,我们显示错误消息。
6. 如果输入是非负数,我们调用`factorial`函数并打印结果。
使用这个程序,您可以计算任何非负整数的阶乘。请注意,对于非常大的数字,可能会发生整数溢出,因为C语言中的int类型有一个最大值限制。
阅读全文
相关推荐


















