【发布时间】:2020-06-14 21:46:08
【问题描述】:
我正在用 C 语言编写一个函数,它接受浮点数和整数幂,并计算基数^幂
到目前为止,我有:
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
此外,这种方法甚至可以实现所谓的“迭代方法”吗?
【问题讨论】:
-
i <= power如果power < 0,您希望for循环运行多少次? -
在我看来循环应该是
-
哦,你说得对。有办法解决吗?还是代码的结构需要改变?
-
power = -power 会解决这个问题
-
我的意思是你的正能量不起作用,f(2.0,2) 给 256,你也需要记住原来的基数