【发布时间】:2013-01-31 03:41:28
【问题描述】:
所以我想学习递归(我知道在这种情况下递归是不必要的)
这个方法我已经写好了,行得通
public static int method(int number) {
if(number == 0) {
return 1;
}
else {
return (int)Math.pow(2,number) + method(number-1);
}
}
这非常适合将 2 的幂从 0 加到数字,但我想知道是否有办法用另一个递归方法调用替换 Math.pow()
【问题讨论】:
-
Burn Math.pow() 只需要一次执行。为什么要在这里递归?
-
@KanagaveluSugumar - “迭代是人类;递归是神圣的。”
-
为什么不返回没有循环或递归的结果?
return (int)Math.pow(2,number+1) -1; -
@MrSmith42 仅适用于对 2 的幂求和,如果将其更改为 3,它将不再起作用。这也是关于学习递归而不是求和 2 的最简单方法
-
当更改为 3 时,您可以将公式更改为
return (int)(Math.pow(3,number+1) -1) / 2。对于任何数字,这都可以概括(几乎不用考虑)。