C语言 编写函数fac(n),用递归法求出n的阶乘.在程序中使用此函数,将输入的整数n的阶乘求出并输出到控制台.
时间: 2024-11-09 19:26:41 浏览: 78
C语言函数的递归和调用实例分析
C语言是一种广泛使用的通用、结构化编程语言,它由Dennis Ritchie在贝尔实验室开发。C语言以其效率高、移植性强而著称,在系统级编程、游戏开发和嵌入式应用等领域都有广泛应用。
为了实现递归计算一个整数n的阶乘,你可以创建如下的`fac`函数:
```c
#include <stdio.h>
// 使用递归的方式计算阶乘
int fac(int n) {
if (n == 0 || n == 1) { // 阶乘的基本情况,0和1的阶乘都是1
return 1;
} else {
return n * fac(n - 1); // 递归调用自身,n乘以n-1的阶乘
}
}
int main() {
int n;
printf("请输入一个非负整数:");
scanf("%d", &n);
if (n >= 0) { // 确保输入是非负整数
long long result = fac(n); // 防止溢出,使用long long存储大结果
printf("该数的阶乘为:%lld\n", result);
} else {
printf("错误!输入应为非负整数。\n");
}
return 0;
}
```
在这个程序中,`main`函数首先获取用户输入的整数,然后调用`fac`函数计算阶乘。注意,由于递归可能导致栈溢出,所以在处理较大数值时需要额外考虑数据类型的范围,并可以使用`long long`类型来避免这个问题。
阅读全文