gpt4 book ai didi

java - 递归方法如何工作?

转载 作者:搜寻专家 更新时间:2023-10-31 08:05:12 27 4
gpt4 key购买 nike

我在网上找到了这个递归的例子,但是我不明白里面发生了什么。

public class MysteryClass {
public static void mystery(int n) {
if (n > 0) {
mystery(n-1);
System.out.println(n * 4);
mystery(n-1);
}
}
public static void main(String[] args) {
MysteryClass.mystery(2);
}
}

输出是

4
8
4

我的理解是

  1. 2 大于 0
  2. 2 - 1 = 1
  3. 1 大于 0
  4. 1 - 1 = 0
  5. 0 不大于 0
  6. 现在我们跳到这一行:System.out.println(n * 4);
  7. 1 * 4 = 4
  8. 2 * 4 = 8
  9. 这里我不明白为什么我多了一个“4”的输出

第 9 步发生了什么?

我用了调试器还是不明白。

最佳答案

MysteryClass.mystery(2);
if (2 > 0) (true) ---> mystery(2-1);
| if(1 > 0) (true) ---> mystery (1-1); // Action (A)
| | if(0 > 0) (false) ---> // do nothing
| |
| System.out.println(1 * 4);
| mystery(1-1);
|
System.out.println(2 * 4);
mystery(2-1); ---> // repeat action (A)

关于java - 递归方法如何工作?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34001811/

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