Java 有人能解释一下这个代码是如何打印1到10的吗?

Java 有人能解释一下这个代码是如何打印1到10的吗?,java,recursion,Java,Recursion,有人能解释一下这个代码是如何打印1到10的吗 class demo { public static void main(String[] args) { display(10); } private static void display(int n) { if (n > 1) { display(n - 1); } System.

有人能解释一下这个代码是如何打印1到10的吗

class demo
{

    public static void main(String[] args) 
    {
        display(10);    
    }
    private static void display(int n) 
    {
        if (n > 1) 
        {
            display(n - 1);
        }
        System.out.println(n);
    }
}

因此,main方法运行display方法并传递值10。然后,检查该值是否大于1(实际值)。下一个使用值n-1再次调用display方法,在本例中为9。最后,打印出10

现在9也经历了同样的循环。9大于1,调用display时使用的值为n-1,现在为8。9被打印出来,现在8通过显示方法。这种情况持续发生,直到值为1,在这种情况下,1不大于1,打印出1,程序退出


如果您想进一步了解它,这称为递归方法。

这是一个递归调用display方法。这里,传递给display方法的参数值存储在堆栈中。当if条件失败时,则从堆栈中弹出n值,并通过行“System.out.println(n)”打印。 换句话说,每次通过传递一个数字来调用display方法时,该数字将存储在堆栈中,这样当代码从递归中出来时,它将使用堆栈中的数字


进行干运行时,您可以看到值1传递到显示方法时,如果条件失败,下一行将打印值1,然后将打印堆栈中的值2,依此类推,它将打印到10,这是第一个传递的值。

尝试在纸上执行此操作(从2或3这样的小数字开始)。你会更好地理解的。我只能理解直到它打印出1,之后就不清楚执行是如何发生的。只需逐行阅读代码。并在纸上记录
n
的值。或者,您可以尝试使用调试器逐步检查代码,并在执行时检查变量。Tadah!:)回答得好,Shubham!