为什么递归数值方法打印出它的输出

时间:2015-06-01 20:59:28

标签: java recursion

有人能以最简单的方式告诉我为什么在调用 生成(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); 
}

3 个答案:

答案 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);

之后。