根据公式2^n=2^(n-1)+2^(n-1),设计计算任意非负整数n的2^n的递归算法。
先决条件:必须执行添加操作

int computepowerOfTwo(int power) {
    if(power == 1)
        return 1;
    else
        return (2*computepowerOfTwo(power-1))  + (2*computepowerOfTwo(power-1))
}

当我以3开始供电时,它返回16

最佳答案

正如另一个答案指出的那样,2^12,而不是1
... 但是你的代码实际上应该在0停止:

if(power == 0)
    return 1;

这是一个学习单元测试价值的好机会。下面是一个简单的测试用例…
for i in range(0, 11):
    assert computepowerOfTwo(i) == 2 ** i

…会告诉你(1)你没有处理0的情况,(2)你对2^1的回答是错误的。

关于algorithm - 算法设计技术,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/37730967/

10-11 00:42