我正在读一本名为"思考Java:如何像计算机科学家一样思考"的书,我最近介绍了递归方法.
public static void countdown(int n)
{
if (n == 0) {
System.out.println("Blastoff!");
} else {
System.out.println(n);
countdown(n - 1);
}
}
Run Code Online (Sandbox Code Playgroud)
这将是一个正常的递归方法,用于倒数到0,我理解发生了什么,但如果你在System.out.println之前进行递归调用,就像这样
public static void countdown(int n)
{
if (n == 0) {
System.out.println("Blastoff!");
} else {
countdown(n - 1);
System.out.println(n);
}
}
Run Code Online (Sandbox Code Playgroud)
它以相反的方式计算,所以如果我为这两个条件语句给出参数3,那么第一个变为"3,2,1,Blastoff!" 但是第二个1是"Blastoff,1,2,3"....我不明白它是如何工作的,有人可以尝试解释这段代码中发生的事情,使其以相反的方式计数吗?