通过公式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
答案 0 :(得分:2)
正如其他答案所指出的,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
的回答是错误的。
答案 1 :(得分:0)
代码中的错误: -
if(power == 1)
您应该返回2^1
2
。else
部分中您返回的内容相当于2*2^(power-1) + 2*2^(power-1)
,这将导致2 ^(n + 1)这是错误的,因此您应该返回2*2^(power-1)
根据您的问题,您的功能应如下: -
int computepowerOfTwo(int power) {
if(power == 0)
return 1;
else
return computepowerOfTwo(power-1) + computepowerOfTwo(power-1);
}