Java模与除法

Java模与除法,java,modulus,Java,Modulus,有人能解释一下为什么这个代码会返回输入为x的内容吗 public static void calc(int x) { if((x / 10) != 0) { calc(x / 10); } System.out.print(x % 10); } 您的calc方法是一种递归方法 如果执行int除法的结果不是0,即如果数字至少是10,则除以10,并调用自身 最终,您将得到一个小于10的数字。if条件将为false,x%10将为x本身。但此时的x是什么?这是数字

有人能解释一下为什么这个代码会返回输入为x的内容吗

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

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

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

最终,您将得到一个小于
10
的数字。
if
条件将为
false
x%10
将为
x
本身。但此时的
x
是什么?这是数字的第一位

然后基本情况结束,递归调用all call
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

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

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

最终,您将得到一个小于
10
的数字。
if
条件将为
false
x%10
将为
x
本身。但此时的
x
是什么?这是数字的第一位

然后基本情况结束,递归调用all call
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

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

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

最终,您将得到一个小于
10
的数字。
if
条件将为
false
x%10
将为
x
本身。但此时的
x
是什么?这是数字的第一位

然后基本情况结束,递归调用all call
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

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

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

最终,您将得到一个小于
10
的数字。
if
条件将为
false
x%10
将为
x
本身。但此时的
x
是什么?这是数字的第一位

然后基本情况结束,递归调用all call
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

我不认为它对负数有效,但对非负数有效
x/10
是删除了一位数的
x
,而
x%10
x
的一位数。忘了补充一句,它适用于任何正数。我不认为它适用于负数,但对于非负数,这就行了
x/10
是删除了一位数的
x
,而
x%10
x
的一位数。忘了补充一句,它适用于任何正数。我不认为它适用于负数,但对于非负数,这就行了
x/10
是删除了一位数的
x
,而
x%10
x
的一位数。忘了补充一句,它适用于任何正数。我不认为它适用于负数,但对于非负数,这就行了
x/10
x
并删除了一位数字,而
x%10
x
的一位数字。忘记添加它是用于任何正数