假设我有方法
public static void whatsIt(int n){
if (n>10)
whatsIt(n/10);
System.out.print(n%10);
}
我打电话给它(347),为什么打印347而不是3?
答案 0 :(得分:3)
您可以逐步完成它的工作:
whatsIt(347)
- is 347 > 10? yes
-- whatsIt(34)
--- is 34 > 10? yes
---- whatsIt(3)
----- is 3 > 10? no
----- print 3 % 10 (-> 3)
--- print 34 % 10 (-> 4)
- print (347 % 10) (-> 7)
答案 1 :(得分:2)
如果要打印3,请使用此
public static void whatsIt(int n){
if (n>10) whatsIt(n/10);
else System.out.print(n%10);
}
您的代码如下:
答案 2 :(得分:1)
试试这个:
public static void whatsIt(int n){
if (n>10)
whatsIt(n/10);
else
System.out.print(n%10);
}
因为如果n <= 10,你不想打印任何东西。
在初始代码中,每个递归调用都打印n%10。因此,第一个呼叫whatsIt(347)
打印7(347%10),第二个呼叫打印4(34%10),第三个呼叫打印3(3%10)。这些将在回溯过程中以相反的顺序打印,给你347。
答案 3 :(得分:1)
如果他们自称,方法不会停止。当子调用完成后,控制流程返回到&#34;原始&#34;方法调用并继续到下一行,即打印,从而打印原始数字。