任何人都可以解释这段代码如何打印1到10?

时间:2017-07-28 14:51:28

标签: 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.out.println(n);
    }
}

2 个答案:

答案 0 :(得分:1)

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

执行干运行时,您可以看到值1传递给显示方法时if条件失败并且下一行打印值1然后将打印2堆栈中等等它将打印最多10个是第一个传递的值。

答案 1 :(得分:0)

因此main方法运行display方法并传递值10.然后,检查该值是否大于1(它是)。下一个。再次调用显示方法,其值为n-1,在这种情况下为9。最后,打印出10。

现在9经历了同一个循环。 9大于1并且显示的值为n-1,现在为8,打印出9,现在8经过显示方法。这种情况一直持续到值为1,在这种情况下,1不大于1,打印出1并退出程序。

如果您想更多地研究它,这称为递归方法。