根据公式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^1
是2
,而不是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/