您如何使用迭代计算C中的负幂?

问题描述 投票:-1回答:1

我正在用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

的内容

此外,此方法甚至可以实现所谓的“迭代方法”吗?

c iteration pow
1个回答
0
投票

在这里:

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++)
© www.soinside.com 2019 - 2024. All rights reserved.