首页 > 解决方案 > 为什么这个递归代码打印“1 2 3 4 5”?

问题描述

我是 Java 递归的新手,在教科书中遇到了这段代码。运行代码后,它会打印“1 2 3 4 5”,我想知道为什么它不打印“5 4 3 2 1”?

public class Test {
  public static void main(String[] args) {
    xMethod(5);
  }

  public static void xMethod(int n) {
    if (n > 0) {
      xMethod(n - 1);
      System.out.print(n + " ");
    }
  }
}

标签: javarecursion

解决方案


这是由于 println() 的顺序和对 xMethod() 的递归调用

如果您翻转两行,它将在递归调用之前打印给您 5 4 3 2 1

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

public static void xMethod(int n) {
    if (n > 0) {
        System.out.print(n + " ");
        xMethod(n - 1);
    }
}

推荐阅读