递归算法是一种通过在问题的解空间内反复应用相同规则的方法。它通常包含两个关键部分:基本情况(base case)和递归规则。
1. **基本情况(Base Case):** 定义问题的最小规模,直接求解而不再进行递归。这是确保递归不会无限进行的关键。
2. **递归规则:** 描述如何将原始问题分解为更小的、类似的子问题,并通过递归调用解决它们。递归规则应使问题规模逐渐缩小,最终达到基本情况。
一个经典的例子是计算斐波那契数列:
```python
def fibonacci(n):
if n == 0:
return 0
elif n == 1:
return 1
else:
return fibonacci(n - 1) + fibonacci(n - 2)
```
在这里,基本情况是 n 等于 0 或 1 时直接返回相应的斐波那契数,而递归规则是将问题拆解为两个子问题:计算 n-1 和 n-2 处的斐波那契数,然后相加。
递归算法通常具有简洁的代码结构,但在实践中需要注意性能和堆栈深度,以免造成栈溢出。
当谈到递归的例子时,经典的例子之一是计算阶乘。以下是一个用 C 语言编写的计算阶乘的递归函数:
```c
#include <stdio.h>
// 递归函数计算阶乘
int factorial(int n) {
// 基本情况:阶乘的定义是 0 的阶乘为 1
if (n == 0) {
return 1;
}
// 递归规则:n! = n * (n-1)!
else {
return n * factorial(n - 1);
}
}
int main() {
int num = 5; // 举例:计算 5 的阶乘
int result = factorial(num);
printf("Factorial of %d is %d\n", num, result);
return 0;
}
```
在这个例子中,`factorial` 函数通过递归调用自身来计算阶乘。基本情况是当 n 等于 0 时返回 1,递归规则则是利用阶乘的定义进行递归计算。
692

被折叠的 条评论
为什么被折叠?



