Java模数和除法

时间:2015-04-07 23:09:37

标签: java modulus

有人请解释为什么此代码会返回以x

输入的内容
public static void calc(int x)
 {
   if((x / 10) != 0)
   {
     calc(x / 10);
   }
   System.out.print(x % 10);
 }

1 个答案:

答案 0 :(得分:3)

您的calc方法是一种递归方法。

如果执行int除法的结果不是0,即如果该数字至少为10,则除以10并自行调用。

最终,您将获得一个小于10的数字。 if条件为falsex % 10本身为x。但到目前为止x是什么?它是该数字的第一位数。

然后基本案例结束,递归调用所有调用x % 10进行打印。在每个级别,打印另一个数字,直到原始呼叫打印最后一个数字。

示例:

calc(456)
    x is 456.
    x / 10 is 45, not 0.  Call calc(x / 10)
    calc(45)
        x is 45.
        x / 10 is 4, not 0.  Call calc(x / 10)
        calc(4)
            x is 4.
            x / 10 is 0.
            Print x % 10, or 4.
        Print x % 10, or 5.
    Print x % 10, or 6.

456