Java 递归错误输出
我得到了以下代码Java 递归错误输出,java,loops,recursion,methods,Java,Loops,Recursion,Methods,我得到了以下代码 int go(int x){ if (x<1) return 1; else return x + go(x-2) + go(x-3); } intgo(intx){ 如果(x听起来你犯了一个错误,go(1)=3+go(1-2)其中实际公式是go(1)=1+go(1-2)+go(1-3) 在这个递归方法中,你的基本情况是xTo我在问题上写的代码3+go(-1)从哪里来?4从哪里来?你在计算x=3吗?JavaB可能在go(1)调用中使用
int go(int x){
if (x<1)
return 1;
else
return x + go(x-2) + go(x-3);
}
intgo(intx){
如果(x听起来你犯了一个错误,go(1)=3+go(1-2)
其中实际公式是go(1)=1+go(1-2)+go(1-3)
在这个递归方法中,你的基本情况是xTo我在问题上写的代码3+go(-1)
从哪里来?4从哪里来?你在计算x=3吗?JavaB可能在go(1)调用中使用了x=3,得到了“3+go(-1)”,我不明白你是怎么得到的(1+go(-1)+go(-2))“…对不起,我是新来的NVM,我知道了!非常感谢你的帮助!你从哪里得到“1+go(1-2)+go(1-3)”的?如果我的问题是愚蠢的,对不起,我是一个新手NVM,我知道了!非常感谢你的帮助!
go(3)
= 3 + go(1) + go(0)
= 3 + go(1) + 1
= 3 + (1 + go(-1) + go(-2)) + 1
= 3 + (1 + 1 + 1) + 1
= 7
go(3)
3 + go(3-2) + go(3-3)
3 + go(1) + go(0)
3 + 1 + go(1-2) + go(1-3) + 1
5 + go(-1) + go(-2)
5 + 1 + 1
7
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
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