[英]How does this code work(simple java recursion)?
我在理解递归时遇到了麻烦。 我了解理论。 就像当一个函数调用自身时一样,需要一个基本的情况来结束递归,而在程序中使用它时,一切都让我感到困惑。 例如,我在下面发布了一些代码。 当我在递归函数之前调用print函数..它以相反的顺序打印数字(54321),而在递归之后调用它时,它将打印为12345。为什么?
public class Main {
public static void main(String[] args) {
printNumbers(5);
}
public static void printNumbers(int num){
if(num==0) {
return;
}
System.out.println(num); // this prints 54321
printNumbers(num-1);
System.out.println(num);//this prints 12345
}
}
在这里,“桌面检查”(笔和纸)之类的东西非常方便,因此您可以逐步执行代码并在每个步骤中描述状态。
本质上,直到printNumbers
方法返回时才调用第二条打印语句,这意味着您的执行类似于...
printNumber(5)
num = 5
num == 0 = false
print num (5)
printNumbers(num - 1)
num = 4
num == 0 = false
print num (4)
printNumbers(num - 1)
num = 3
num == 0 = false
print num (3)
printNumbers(num - 1)
num = 2
num == 0 = false
print num (2)
printNumbers(num - 1)
num = 1
num == 0 = false
print num (1)
printNumbers(num - 1)
num = 0
num == 0 = true (return)
print num (1)
print num (2)
print num (3)
print num (4)
print num (5)
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.