我試過改變變數型別,但這仍然不起作用。
double power(double a, long long b){
while(b>1){
a *= a;
b--;
}
return a;
}
uj5u.com熱心網友回復:
當 b>2 時,您的代碼將無法正常運行,因為當您執行 a = a*a; 時 第二次它不會是a^3而是a^4,下一次它將是a^8,依此類推。正確的代碼如下所示:
double power(double a, long long b){
double k = 1;
while(b>0){
k *= a;
b--;
}
return k;
}
uj5u.com熱心網友回復:
你a在每次迭代中都在改變。假設你稱之為power(2, 3)。
首先,您執行2 * 2并將其分配給a,這將變為4.
下一次迭代,你會再次這樣做a * a是4 * 4。只需將結果保存在變數中,不要更改引數:
double power(double a, long long b){
double r = a;
while(b>1){
r *= a;
b--;
}
return r;
}
uj5u.com熱心網友回復:
你正在改變變數a,它會導致缺陷。你可以做的是
double power(double base, double exp)
{
double result = 1;
for(int i = 0; i < exp; i )
{
result *= base;
}
return result;
}
轉載請註明出處,本文鏈接:https://www.uj5u.com/qukuanlian/369392.html
上一篇:不知道為什么我得到ValueError:invalidliteralforint()withbase10:
下一篇:在C中初始化結構陣列中的值
