为什么递归方法会以相反的顺序打印数字

17 浏览
0 Comments

为什么递归方法会以相反的顺序打印数字

为什么当我在打印之前调用函数时,递归会倒序,但在调用函数之后打印时却不会倒序?

出于某种我不理解的原因,递归方法在在调用函数之前打印时会倒序,而在调用函数之前打印时却不会倒序。

有人能解释给我吗?

public void tricky1(int n) {

if (n >= 0) {

System.out.print(n);

tricky1(n - 2);

}

}

第二个例子

public void tricky2(int n) {

if (n >= 0) {

tricky2(n - 2);

System.out.print(n);

}

}

0
0 Comments

为什么递归方法会倒序打印数字?

当我们运行下面的代码时:

tricky2(n - 2);
System.out.print(n);

结果会按照升序打印,这是因为语句System.out.print(n);在行tricky2(n - 2);创建的执行分支的最后一个递归调用之后执行。

相反地,当执行下面的代码片段时:

System.out.print(n);
tricky2(n - 2);

数字将在递归调用之前打印在控制台上。因此,数字将按照降序(从高到低)打印出来。

解决方法:调整代码的顺序,将System.out.print(n);语句放在递归调用之后,以实现按照升序打印数字的目的。

0