【发布时间】:2014-05-23 00:36:16
【问题描述】:
如果您给出 n = 20,则以下方法返回 5。
我的问题是每次迭代如何增加 1 ?
mystery(10) + 1
= mystery(5) + 2
= mystery(2) + 3
= mystery(1) + 4
= mystery(0) + 5 = 5.
我在递归方面遇到了一些困难。
public static int mystery(int n){
if(n <= 0){
return 0;
}else{
return mystery(n / 2 ) + 1;
}
}
【问题讨论】:
-
我的问题是 1 如何在每次迭代中递增?请澄清。
-
在调试器中逐步完成 - 一切都会得到解答
-
简单地说你可以认为它返回
ln(n) + 1。 -
@devnull 应该是
ln(n)/ln(2) + 1,或者log-base-2(n) + 1