我有以下程序
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之后,它进入了其他条件。
我不明白为什么要打印3作为答案。
我对java还是新手,所以仍然在尝试理解基本知识。
我不相信这个问题是重复的。作为一个java初学者,我的问题要简单得多。另外,我认为问题是使用javascript而不是java。
发布于 2015-08-06 17:40:02
听着,如果是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发布于 2015-08-06 17:39:18
递归不是在1 + 33上,而是仅在33上,所以它是:
doSomething(333)
= 1 + doSomething(33)
= 1 + 1 + doSomething(3)
= 1 + 1 + 1
= 3https://stackoverflow.com/questions/31862215
复制相似问题