實現double power(double base, int exponent),求base的exponent次方。不得使用庫函式,同時不需要考慮大數問題。
分析:
源**如下:
執行結果:#includeusing std::cout;
using std::cin;
using std::endl;
class throwerror{};
double powerwithunsigned1(double base, int exponent)
double power1(double base, int exponent)
; }
else
//指數大於0時,返回0
return 0;
} else
else
}}void test11()
void test12()
void test13()
void test14()
void test15()
int main()
分析:方法一雖然較全面的計算出指數的值,但每次都需要迴圈exponent次,效率顯然不是很高。如果exponent為32,32是16的平方,16是4的平方,依次類推,可以得到以下公式,使用遞迴方法可以顯示該演算法。0^5 = 0
2^-5 = 0.03125
-2^-5 = -0.03125
-2^5 = -32
0^0 = 0
請按任意鍵繼續. . .
源**如下:
執行結果和方法一一致!#includeusing std::cout;
using std::cin;
using std::endl;
class throwerror{};
double powerwithunsigned2(double base, int exponent)
double power2(double base, int exponent)
; }
else
//指數大於0時,返回0
return 0;
} else
else
}}void test21()
void test22()
void test23()
void test24()
void test25()
int main2()
注意:我們用右移替代了除以2,用位於運算替代了求餘運算子判斷是基數還是偶數,這種方法可以提高效率!
運算結果:#include#include #includebool g_invalidinput = false;
bool equal(double num1, double num2);
double powerwithunsignedexponent(double base, unsigned int exponent);
double power(double base, int exponent)
unsigned int ab***ponent = (unsigned int)(exponent);
if (exponent < 0)
ab***ponent = (unsigned int)(-exponent);
double result = powerwithunsignedexponent(base, ab***ponent);
if (exponent < 0)
result = 1.0 / result;
return result;}/*
double powerwithunsignedexponent(double base, unsigned int exponent)
*/double powerwithunsignedexponent(double base, unsigned int exponent)
bool equal(double num1, double num2)
// ********************測試**********************
void test(double base, int exponent, double expectedresult, bool expectedflag)
int main()
test1 begins.
test passed.
test2 begins.
test passed.
test3 begins.
test passed.
test4 begins.
test passed.
test5 begins.
test passed.
test6 begins.
test passed.
test7 begins.
test passed.
請按任意鍵繼續. . .
劍指offer面試題11
面試題1 數值的整數的次方 題目 實現函式double power double base,int exponent 求base的 exponent次方。不得使用庫函式,同時不需要考慮大數問題。思路 首先應該明確指數的可能取值 正整數,0,負整數 另外還需要考慮底數是0的情形。對於負整指數,我們可以...
劍指offer 面試題11 數值的整數次方
首先,我們分析下可能出現的情況 指數可能為負值,我們先求指數的絕對值次方,然後求導。求導,那就要考慮分母不為0的情況了。bool g invalidinput false double power double base,int exponent unsigned int ab ponent uns...
劍指offer 面試題11 數值的整數次方
題目 給定乙個double型別的浮點數base和int型別的整數exponent。求base的exponent次方 class solution int powerresult double base,unsigned int exponent double result 1.0 for int i...