我得到了以下代码
int go(int x){
if (x<1)
return 1;
else
return x + go(x-2) + go(x-3);
}
通过调用 go(3)
答案是 7
但每次我这样做(我必须手动完成)我都会得到 8。这是我的逻辑:
3 + go(1) + go(0)/1 = 3 + go(1) + 1(因为 0 小于 1)
那么,
3 + go(-1) = 3 + 1
因此,
3 + 4 + 1 = 8。
我做错了什么?
最佳答案
听起来您犯了错误,如 go(1) = 3 + go(1-2)
,实际公式为 go(1) = 1 + go(1-2) ) + go(1-3)
.
go(3)
= 3 + go(1) + go(0)
= 3 + go(1) + 1
= 3 + (1 + go(-1) + go(-2)) + 1
= 3 + (1 + 1 + 1) + 1
= 7
关于java - 递归错误输出,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35835640/