C++递归函数func(5)输出21的计算逻辑解析请求
理解递归函数
func(5)的计算过程 别担心,咱们一步步拆解这个递归调用的过程,你就能明白为什么结果是21了。首先先明确这个函数的规则:
- 当
x=0时,直接返回2 - 当
x=1时,直接返回3 - 当
x>1时,返回func(x-1) + func(x-2),也就是前两个数的和,逻辑类似斐波那契数列但初始值不同
现在咱们从func(5)开始逐层展开计算:
计算
func(5):
根据规则,func(5) = func(4) + func(3),需要先算出func(4)和func(3)的值。计算
func(4):func(4) = func(3) + func(2),得先算func(3)和func(2)。计算
func(3):func(3) = func(2) + func(1),先算func(2)和func(1)。计算
func(2):func(2) = func(1) + func(0),这里咱们已经知道基础情况(base case)的值了:func(1)=3func(0)=2
所以func(2) = 3 + 2 = 5
回到
func(3):
代入func(2)=5和func(1)=3,得到func(3) = 5 + 3 = 8回到
func(4):
代入func(3)=8和func(2)=5,得到func(4) = 8 + 5 = 13最后回到
func(5):
代入func(4)=13和func(3)=8,得到func(5) = 13 + 8 = 21
本质上这个函数生成的序列是:2, 3, 5, 8, 13, 21...每一项都是前两项之和,和斐波那契数列逻辑一致,只是起始的两个数是2和3而已。
内容的提问来源于stack exchange,提问作者Usman Ali
相关产品推荐
相关产品推荐

