有人能以最简单的方式告诉我为什么在调用 生成(123) 时会打印出 321123 ?我明白为什么打印出321,但123部分让我失望。
/** @param x an integer such that x >= 0
*/
public void generate(int x) {
System.out.print(x % 10);
if ((x / 10) != 0) {
generate(x / 10);
}
System.out.print(x % 10);
}
答案 0 :(得分:4)
递归进入"在"然后回来" out"。想一想:
@{$byRobotNumber}{qw(inquiry rch serial)} = @{$tokens}[13,16,3];
答案 1 :(得分:0)
因为您在递归调用之前和之后都打印了x%10
。当数字为123时,它打印3,工作12,然后再打印3。
当它变为12时,它打印2,工作1,然后再打印2。
相同的1.所以你得到每次调用中剩余部分的“嵌套”打印。
答案 2 :(得分:-1)
进入更深层的功能级别:
if((x / 10)!= 0){
生成(x / 10);
}
也以filo顺序退出,该顺序将321反转为123
因为还有另一个
System.out.print(x%10);
之后。