|
1
4
尝试使用更简单的代码进行理解,该代码将打印出来
|
|
2
3
因为第一次调用
这是真的
所以
下一个输出与当前堆叠调用的“取消堆叠”相关。 调用的“unstack”按与调用相反的顺序执行。 因此,您将从上次调用取消到第一次调用。
为了简化递归调用的工作方式,请记住方法调用是堆叠的(递归或非递归),堆栈是后进先出结构。
回到解释上来
该方法返回,JVM继续执行上一个堆栈调用:
喜欢
所以
继续为当前堆叠的调用应用相同的逻辑
|
|
|
3
3
此语句“重新启动”该方法,并且在i>之前不会执行下面的代码;1返回false(当i=1时第一次发生)。 至于结果存储的位置:您的方法是返回类型void,这意味着没有结果。如果您正在考虑输出,我希望您现在理解为什么它没有打印出来。 |
|
|
4
1
如果函数的开始
此时会调用“下一级递归”(也就是说,在每一级,您首先要做的是调用另一个递归函数),当您到达最后一级(第100级->i=1)时,您可以访问代码
完成代码后,第100级(i=1)完成,然后是第99级、第98级,最后完成功能的是第1级(i=100)。 尝试在internet上观看一些视频(递归是如何工作的),这些视频将在演示中解释这一点,这将更容易理解。 |
|
|
user29759326 · 如何返回递归函数中的最后一个值? 1 年前 |
|
|
malife89 · 将java中的字符串读取为正确的日期格式 1 年前 |
|
|
Tim · 在java中,有没有更快的方法将字节数组写入文件? 1 年前 |
|
|
rudraraj · java中未声明最终变量 1 年前 |
|
|
Bala Ji · 以下BFS的实施效率如何? 1 年前 |