【发布时间】:2012-04-24 18:45:08
【问题描述】:
我正在尝试在不使用 math.h / pow() 的情况下编写递归幂函数,但我不断收到 -1.#IND 的垃圾值。我想我在调用 power 函数的新实例时遗漏了一些东西,但我不太明白如何绕过它。我的完整代码很短:
#include <iostream>
using namespace std;
double power(double b, int e){
double x;
if(e == 0){
x = b;
}
else if(b == 0){
x = 1;
e = 0;
}
else if(e < 0){
x = (1 / b) * power(b, ++e);
}
else{
x = b * power(b, --e);
}
return x;
}
int main(){
double num;
int exp;
cout << "Please Enter Your Number: ";
cin >> num;
cout << "Please Enter The Explonent: ";
cin >> exp;
cout << power(num, exp);
cin >> num;
}
【问题讨论】:
-
另外,我认为你的数学在负功率情况下是错误的。你应该做
return 1 / (b * power(b, abs(e)--) -
对您的方法的一些想法:
1.5 ^ 0 == 1、1.5 ^ x != 1.5 ^ -x、0 ^ x != 1 ^ 0... -
@Tejs: 嗯..,你的意思可能是pre decrement,而不是post decrement
-
你应该告诉我们你得到错误的值是什么,从你的代码中它应该满足
e的所有正值的终止条件,负值e的错误也是如此? -
我更新了我的数学,但我的负指数数学有点偏离,2^-3 返回 .25 而不是 .125,也许我需要 setw?