递归法较难例题c语言
时间: 2024-10-02 18:02:55 浏览: 21
递归法在C语言中通常用于解决那些可以分解成规模更小的同类问题的问题,例如计算阶乘、斐波那契数列、遍历树或图等。下面是一个简单的例子:计算阶乘。
```c
#include <stdio.h>
// 定义递归函数计算阶乘
int factorial(int n) {
// 基本情况:0的阶乘为1
if (n == 0 || n == 1)
return 1;
// 递归情况:n的阶乘等于(n-1)的阶乘乘以n
else
return n * factorial(n - 1);
}
int main() {
int num;
printf("请输入一个正整数:");
scanf("%d", &num);
// 输出结果并防止栈溢出错误
if (num >= 0) {
long long result = factorial(num);
if (result > INT_MAX) {
printf("计算结果超出了整型范围\n");
} else {
printf("阶乘的结果是:%lld\n", result);
}
} else {
printf("输入错误,只接受非负整数\n");
}
return 0;
}
```
在这个例子中,当用户输入一个数字`num`,程序会递归地计算`num!`,直到达到基本情况(`n=0`或`n=1`),然后逐层返回结果。
阅读全文