gpt4 book ai didi

java - 数字金字塔,初学递归追踪难吗?

转载 作者:太空宇宙 更新时间:2023-11-04 14:23:19 25 4
gpt4 key购买 nike

我是 JAVA 的初学者,我在跟踪递归和完全理解它方面遇到了一些困难,所以这里我有一个程序的代码,如果我们编写 3,它将输出:

1
12
123
12
1

或者如果我们写5,它会输出

1
12
123
1234
12345
1234
123
12
1

public class Aufgabe3 {

private static void printSequenz(int n) {
if(n<1) {
return;
}
printLoToHi(n-1);
printMany(n);
printHiToLo(n-1);
}

private static void printHiToLo(int n){
if(n<1){
return;
}
printMany(n);
printHiToLo(n-1);
}

private static void printLoToHi(int n){
if(n<1){
return;
}
printLoToHi(n-1);
printMany(n);
}

private static void printMany(int n){
for(int i=1;i<=n;i++){
System.out.print(i);
}
System.out.println();
}

public static void main(String[] args) {
printSequenz(5);
}
}

现在这是我不明白的地方。例如,在方法 printHiToLo 中,它调用方法 printMany(n),然后它为 n-1 调用自身,如此重复,直到 n 大于 0。但我不明白方法 printLoToHi 是如何工作的?它如何到达 printMany 方法?如果它只是调用自己直到 n 大于 0。这对我来说真的很困惑......感谢任何帮助我的人:)

最佳答案

private static void printLoToHi(int n){
if(n<1){ // This is the base case that terminates the recursion.
return; // You'll always have one - sometimes more.
}
printLoToHi(n-1); // This is where the recursion takes place.
printMany(n); // But when n < 1 it returns to here and continues on.
}

所以你看到它确实被调用了;仅在达到基本情况 (n < 1) 后。

一个简单的例子是,如果您使用 printLoToHi(1) 调用它...

  1. 它将通过 if 条件。
  2. 它以n - 1 (0) 作为参数来调用自身。
  3. 这次它不满足条件并返回。
  4. n == 1 在我们原来的方法中。
  5. printMany(1) 被调用。

关于java - 数字金字塔,初学递归追踪难吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26946159/

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