调用wacky(4,6)的返回值是什么?如何逐步计算该递归?
一步步拆解wacky(4,6)的递归计算过程
先把这个递归函数的代码清晰列出来:
public static int wacky (int x , int y){ if(x <= 1){ return y; } else{ return wacky(x - 1, y - 1) + y; } }
递归的核心逻辑是先逐层深入到终止条件(x<=1时返回y),再把结果一步步回溯叠加,咱们来一步步算wacky(4,6):
计算
wacky(4,6):
x=4>1,进入else分支,所以结果 =wacky(3,5) + 6计算
wacky(3,5):
x=3>1,进入else分支,结果 =wacky(2,4) + 5计算
wacky(2,4):
x=2>1,进入else分支,结果 =wacky(1,3) + 4计算
wacky(1,3):
x=1<=1,触发终止条件,直接返回y=3
现在开始回溯计算,把结果往回带:
wacky(2,4) = 3 + 4 = 7wacky(3,5) = 7 + 5 = 12wacky(4,6) = 12 + 6 = 18
所以最终wacky(4,6)的返回值是18~你之前的计算思路没有遵循递归“先深入再回溯”的逻辑,把各个阶段的数字乱加在一起,自然会出错啦。
内容的提问来源于stack exchange,提问作者user8850268
相关产品推荐
相关产品推荐

