所以我试着学习递归(我知道在这种情况下递归是不必要的)
我已经编写了这个方法,它可以正常工作
public static int method(int number) {
if(number == 0) {
return 1;
}
else {
return (int)Math.pow(2,number) + method(number-1);
}
}
这对于从0到number的2的幂求和非常有效,但是我想知道是否有一种方法可以用另一个递归方法调用来替换Math.pow()
8条答案
按热度按时间j2cgzkjk1#
您可以将其用作递归幂函数:
或者,作为一行正文:
tag5nh1u2#
你应该定义另一个递归方法来递归计算Math.pow(2,n)。但是我建议做2的移位操作来快速计算Math.pow(2,n)。例如移位2〈〈(n-1)将在这里做hob。
lmyy7pcs3#
如果你想学习递归,以法波纳契级数为例。
但在您的情况下,它可以通过for循环轻松完成。
gc0ot86w4#
更一般的解决方案:
这将处理传递的值为整数的所有可能情况。
gmol16395#
也许有点远离严格的问题,你的问题是计算总和几何级数其中 * 是一个系列之间的一个常数比连续的条款 *。
你的第一个元素等于1(2的幂等于0),你的比值等于2,所以你可以用一个常见的、众所周知的等式来代替递归:
或者对于一般术语(不仅是幂o 2):
如果你真的想在这里递归,你可以把
Math.pow(ration,n)
改成其他答案中提出的递归函数。我认为它不会帮助解决你的问题,但会是一个很好的好知道答案。
gz5pxeao6#
vc6uscn97#
ldioqlga8#
从这个问题我的假设是你想加上一个例子,
如果是的话,你可以试试,
通过每个堆栈的帧,我们应该对SumPowerOf2(3)进行以下分析