Java 如何理解给定的递归问题?

Java 如何理解给定的递归问题?,java,recursion,Java,Recursion,我在中学习Java,我在递归主题中学习。有人能解释一下这个代码的工作方式吗? 输出是45,但我真的不明白如何才能得到它,尤其是这一部分 返回结束+和(开始,结束-1) 将值替换到公式中,可以执行以下操作: sum(5,10)=end+sum(start,end-1) sum(5,10)=10+sum(5,10-1) 等等 注意:每次调用sum都有自己的参数,因此下次调用时不会更改上一个值。将值替换到公式中,可以执行以下操作: sum(5,10)=end+sum(start,end-1) sum(

我在中学习Java,我在递归主题中学习。有人能解释一下这个代码的工作方式吗? 输出是45,但我真的不明白如何才能得到它,尤其是这一部分 返回结束+和(开始,结束-1)


将值替换到公式中,可以执行以下操作:

sum(5,10)=end+sum(start,end-1)

sum(5,10)=10+sum(5,10-1)

等等


注意:每次调用
sum
都有自己的参数,因此下次调用时不会更改上一个值。

将值替换到公式中,可以执行以下操作:

sum(5,10)=end+sum(start,end-1)

sum(5,10)=10+sum(5,10-1)

等等


注意:对
sum
的每次调用都有自己的参数,因此下一次调用时不会更改上一个值。

递归与调用任何其他方法没有区别;这恰好是相同的方法。把它写在纸上:当你调用
sum(5,10)
时,你最终返回
10+sum(5,10-1)
。重复此步骤,计算出
和(5,9)
是什么;继续,直到不再有递归调用。“社区”给出了下面的答案。他们所做的被称为“手工执行”。基本上你按照程序中的步骤,在一张纸上写下每次计算得到的结果。最后你应该有正确的答案,就像电脑给你的一样。这是一个很好的(我认为是必要的)技术来理解代码真正在做什么。感谢大家的帮助!递归与调用任何其他方法没有区别;这恰好是相同的方法。把它写在纸上:当你调用
sum(5,10)
时,你最终返回
10+sum(5,10-1)
。重复此步骤,计算出
和(5,9)
是什么;继续,直到不再有递归调用。“社区”给出了下面的答案。他们所做的被称为“手工执行”。基本上你按照程序中的步骤,在一张纸上写下每次计算得到的结果。最后你应该有正确的答案,就像电脑给你的一样。这是一个很好的(我认为是必要的)技术来理解代码真正在做什么。感谢大家的帮助!所以基本上求和部分是END+sum(start,END-1),循环区域的开始就是这里,对吗?我希望你能理解我的解释。或多或少,但是
end
也用于循环(它被递减,直到不再大于
start
)。好的,非常感谢。我想我明白了。所以基本上求和部分是END+sum(start,END-1),循环区域的开始就是这里,对吗?我希望你能理解我的解释。或多或少,但是
end
也用于循环(它被递减,直到不再大于
start
)。好的,非常感谢。我想我明白了。
    public class Main {
      public static void main(String[] args) {
        int result = sum(5, 10);
        System.out.println(result);
      }
      public static int sum(int start, int end) {
        if (end > start) {
          return end + sum(start, end - 1);
        } else {
          return end;
        }
      }
    }