我正在用C编写一个函数,该函数接受一个浮点数和整数幂,并计算base ^ power
到目前为止,我有:
float powIteration(float base, int power){
if (power == 0){
return 1;
}
else if (power > 0){
for (int i = 0; i <= power; i++){
base *= base;
}
return base;
}
else if (power < 0){
for (int i = 0; i <= power; i++){
base *= base;
}
return 1/base;
}
}
我已经使用递归解决了这个问题。但是我也想使用迭代来做到这一点。但是由于某种原因,此代码会产生类似2 ^ -2 = 0.5
的内容此外,此方法甚至可以实现所谓的“迭代方法”吗?
在这里:
else if (power < 0){
for (int i = 0; i <= power; i++){
base *= base;
}
return 1/base;
}
[您使for循环从0开始,如果您的功率为-2,则它不满足您的运行条件i <= power
,因为您的i
始终为> power
;
如下更改您的for循环:
for(int i=power; i<=0; i++)