推荐答案
// www.javascriptcn.com code example
#include <stdio.h>
// 递归函数计算斐波那契数列
int fibonacci(int n) {
if (n <= 1) {
return n;
}
return fibonacci(n - 1) + fibonacci(n - 2);
}
int main() {
int n = 10; // 计算第10个斐波那契数
printf("斐波那契数列的第 %d 项是: %d\n", n, fibonacci(n));
return 0;
}本题详细解读
1. 递归函数 fibonacci
- 函数定义:
int fibonacci(int n) 是一个递归函数,用于计算第 n 个斐波那契数。
- 递归终止条件:当
n <= 1 时,直接返回 n。这是因为斐波那契数列的前两项分别是 0 和 1。
- 递归调用:对于
n > 1 的情况,函数会递归调用自身,计算 fibonacci(n - 1) 和 fibonacci(n - 2),并将它们的和返回。
2. 主函数 main
- 变量
n:在 main 函数中,定义了一个整数 n,表示要计算的斐波那契数列的项数。
- 调用递归函数:通过
fibonacci(n) 调用递归函数,计算第 n 个斐波那契数。
- 输出结果:使用
printf 函数输出计算结果。
3. 递归的优缺点
- 优点:递归代码简洁,易于理解,符合斐波那契数列的数学定义。
- 缺点:递归调用会消耗大量的栈空间,且存在重复计算的问题,效率较低。对于较大的
n,可能会导致栈溢出或性能问题。
4. 优化建议
- 使用迭代:为了提高效率,可以使用迭代方法代替递归。
- 记忆化递归:通过存储已经计算过的斐波那契数,避免重复计算,提高递归的效率。