gpt4 book ai didi

java - 在 Java 中跟踪递归方法时遇到问题

转载 作者:行者123 更新时间:2023-12-03 05:45:02 24 4
gpt4 key购买 nike

这是一个相当简短的问题。我一直无法理解 Java 中的递归概念,我想知道是否有人可以帮助我。我已经成功地跟踪了我所做的 6 个递归方法中的 5 个,但是这个方法确实让我陷入了困境。我原以为输出只是 2(我跟踪的输出),但是当我将其放入编译器时,它得到 1213121(正确的输出)。正如我所说,到目前为止我已经能够做到这一点,但这让我感到困惑。这是我正在处理的内容:

public class Recursion
{
public static void main(String [] args)
{
Recursion r = new Recursion();
r.doSomething(3);
}

public void doSomething(int n)
{
if (n > 0)
{
doSomething(n-1);
System.out.print(n);
doSomething(n-1);
}
}
}

最佳答案

我更愿意在评论中这样做,但评论的格式使其难以理解。您可以像数学方程一样遵循此递归。

基本逻辑是:

DoSomething(n) 结果:

  • 做某事(n-1)
  • 打印n
  • 做某事(n-1)

所以让我们按照 doSomething(3) 的做法

  • 做一些事情(2)
  • 打印3
  • soSomething(2)

现在我们必须弄清楚 doSomething(2) 的作用,因此只需插入 n=2 的值即可:

  • 做某事(1)
  • 打印2
  • 做某事(1)

现在代入 n=1 的值:

  • 做某事(0)
  • 打印1
  • 做某事(0)

doSomething(0) 是基本情况,递归停止。基本上 doSomething(0) 什么都不做。

因此,n=1 的操作变为

  • 打印1

因此,n=2 的操作变为

  • 打印1
  • 打印2
  • 打印1

因此,n=3 的 Action 变为

  • 打印1
  • 打印2
  • 打印1
  • 打印3
  • 打印1
  • 打印2
  • 打印1

关于java - 在 Java 中跟踪递归方法时遇到问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42197108/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com