You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

C语言编写斐波那契数列的递归实现逻辑疑问

递归斐波那契代码逻辑说明

你之前的理解偏差核心是混淆了递归调用的计算对象:代码里相加的不是num-1和num-2两个参数本身,而是**fibonacci_series(num-1)和fibonacci_series(num-2)两个函数调用的返回值**,所有调用都要遵循函数定义的规则逐层计算,直到碰到num=0或num=1的终止条件才会返回确定值向上汇总。


基础计算规则(函数定义)

  • fibonacci_series(0) = 0(终止条件1)
  • fibonacci_series(1) = 1(终止条件2)
  • 当num>1时,fibonacci_series(num) = fibonacci_series(num-1) + fibonacci_series(num-2)

对应你提到的测试场景逐次计算

1. num=2

fibonacci_series(2) = fibonacci_series(1) + fibonacci_series(0) = 1 + 0 = 1

和你错误计算的结果巧合一致,所以你一开始没有发现逻辑问题。

2. num=3

你之前的错误算法:(3-1)+(3-2) = 2 + 1 = 3
正确递归计算:

fibonacci_series(3) = fibonacci_series(2) + fibonacci_series(1)
// 代入已算出的fibonacci_series(2)=1、fibonacci_series(1)=1
= 1 + 1 = 2

和程序实际输出一致。

3. num=4

你之前的错误算法:(4-1)+(4-2) = 3 + 2 =5
正确递归计算:

fibonacci_series(4) = fibonacci_series(3) + fibonacci_series(2)
// 代入已算出的fibonacci_series(3)=2、fibonacci_series(2)=1
= 2 + 1 = 3

和程序实际输出一致。


完整调用栈展开(以num=4为例)

可以更直观看到递归逐层拆解再汇总的过程:

fibonacci_series(4)
= fibonacci_series(3) + fibonacci_series(2)
= [fibonacci_series(2) + fibonacci_series(1)] + [fibonacci_series(1) + fibonacci_series(0)]
= [[fibonacci_series(1) + fibonacci_series(0)] + 1] + [1 + 0]
= [[1 + 0] + 1] + 1
= 3

内容的提问来源于stack exchange,提问作者mo_essmat

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.30 08:27:02