有人请解释为什么此代码会返回以x
输入的内容public static void calc(int x)
{
if((x / 10) != 0)
{
calc(x / 10);
}
System.out.print(x % 10);
}
答案 0 :(得分:3)
您的calc
方法是一种递归方法。
如果执行int
除法的结果不是0
,即如果该数字至少为10
,则除以10
并自行调用。
最终,您将获得一个小于10
的数字。 if
条件为false
,x % 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