我有以下程序
public static int doSomething(int num){
if(Math.abs(num) > 9){
return (1 + doSomething( num / 10));
}
else{
return 1;
}
}
public static void main(String[] args){
System.out.println(doSomething(333));
}
这就是我理解的方式。如果数字是333。
333 / 10
给了我33
。从33> 9它再次运行递归循环给我3
。
在3之后它进入else条件。
我不明白为什么打印3作为答案。
我是java新手,所以仍然试图了解基础知识。
我不相信这个问题是重复的。作为初学者,我的问题要简单得多。我相信的问题还在于使用javascript而不是java。
答案 0 :(得分:5)
看,如果doSomething()
,会返回Math.abs(num) < 9
的内容? 1
?是的,你是对的。好的,让我们开始。
doSomething(333) => 1 + doSomething(33) // 33 not less than 9
=> 1 + (1 + doSomething(3)) // now 3 is less than 9
=> 1 + (1 + {1})
=> 3
答案 1 :(得分:2)
递归不在1 + 33
上,而只在33
上,所以它是:
doSomething(333)
= 1 + doSomething(33)
= 1 + 1 + doSomething(3)
= 1 + 1 + 1
= 3