有人可以告诉我这段代码的输出吗?我的理解是,一旦堆栈完成执行,display()方法将开始显示1,2,3,4,5,但是显示0,1,2,3,4可以解释一下这种情况吗?

package com.test.examples.datastructures.examples.recursive;

public class Recursive {

    public static void main(String args[]) {
        int var = 5;
        recursive(var);
    }

    public static void recursive(int i) {
        System.out.println("i " +i);
        if (i<1) {
            return;
        }
        recursive(i=i-1);
        display(i);
    }

    public static void display(int i) {
        System.out.println(" " +i);
    }
}

最佳答案

display()在递归结束之前不会显示任何内容。此时,i<1转换为i为0。因此,最后一次递归调用返回,并且下一个语句将是第一次完成的显示。它输出0。然后从recursive()返回,下一行显示(1),依此类推。

关于java - 递归方法输出,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/32486049/

10-11 03:10