java - 递归错误输出

标签 java loops recursion methods

我得到了以下代码

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/

相关文章:

java - 从模块中删除 ActionBarSherlock

java - scala 代码在 playframework-2.0 的 eclipse 中导致错误

shell - 在shell脚本中映射文件的对应值

javascript - Google Chrome 上的结果不可预测

java - 在 while 循环中将对象添加到列表

Python:通过回溯解决 "Generate Parentheses"--> 关于 stack.pop() 感到困惑

haskell - 如何计算这个 Haskell 函数中发生了多少递归调用?

java - 使用 Maven 执行主类并保存输出

java - RecyclerView oncreateviewholder android 中的 NPE

recursion - 带尾递归的慢字节码