我给下面的代码递归错误输出
int go(int x){
if (x<1)
return 1;
else
return x + go(x-2) + go(x-3);
}
答案是7
通过调用go(3)
但每次我这样做,(我有手工做),我得到8。这是我的逻辑:
3 +去(1)+去(0)/ 1 = 3 +去(1)+ 1(因为0小于1)
然后,
3 +去(-1) = 3 + 1
因此,
3 + 4 + 1 = 8
我在做什么错?
我给下面的代码递归错误输出
int go(int x){
if (x<1)
return 1;
else
return x + go(x-2) + go(x-3);
}
答案是7
通过调用go(3)
但每次我这样做,(我有手工做),我得到8。这是我的逻辑:
3 +去(1)+去(0)/ 1 = 3 +去(1)+ 1(因为0小于1)
然后,
3 +去(-1) = 3 + 1
因此,
3 + 4 + 1 = 8
我在做什么错?
answer is 7 which is correct.
3 + go(3-2) + go(3-3)
= 3 + go(1) + go(0)
go(0) = 1
go(1) = 1 + go(1-2) + go (1-3)
= 1 + go(-1) + go(-2)
= 1 + 1 + 1
= 3
= putting all values go(3) = 7
,您的基本情况是x<1
,所以每当出现这种情况1将被退回。
以下是它将如何发挥出来。
go(3)== 3 + 3 + 1 == 7
3 + go(3-2)=>go(1) + go(3-3)=>go(0)
go(1)==1+1+1==3
1 + go(1-2)=>go(-1) + go(1-3)=>go(-2)
go(-1)==1
1
go(-2)==1
1
go(0)==1
1
希望结构显示它将如何发挥出来。如果有的话,总是尝试做一个递归方法创建的分支
对于我在这个问题上写的代码 – JavaB
'3 + go(-1)'来自哪里? – MikeCAT
4从哪里来? –