數值的整數次方

2021-10-01 22:35:01 字數 2040 閱讀 6462

題目:實現函式double power(double base, int exponent),求base的exponent次方。不得使用庫函式pow,同時不考慮大數問題。

解題分析

1、基數為0,指數小於0的情況,會導致程式出錯,要進行特殊處理;

2、當基數不為0,指數小於0的情況,即求整數指數冪的倒數;

3、當基數不為0,指數大於0的情況,即求整數指數冪。

方法一:遞乘的方法

#include

#include

#include

using

namespace std;

//遞乘方法

double

numexponent

(double base,

unsigned

int exponent)

return result;

}bool inputbool =

true

;double

power

(double base,

int exponent)

//情況2:基數不為0,指數小於0

unsigned

int ab***ponent =

(unsigned

int)exponent;

if(exponent <0)

double result =

numexponent

(base, ab***ponent)

;//指數小於0,即求整數指數冪的倒數

if(exponent <0)

return result;

}int

main()

執行結果為:

釋:上述**中,inputbool用來標識是否出錯,呼叫者要檢查inputbool以判斷是否出錯,不能留下安全隱患。

方法二:遞迴方法(全面高效)

#include

#include

#include

using

namespace std;

//遞迴方法

double

numexponent

(double base,

unsigned

int exponent)

//1的指數冪為基數本身

if(exponent ==1)

//偶數次冪

double result =

numexponent

(base, exponent >>1)

; result *

= result;

//奇數次冪

if(exponent &

0x01==1

)return result;

}bool inputbool =

true

;double

power

(double base,

int exponent)

//情況2:基數不為0,指數小於0

unsigned

int ab***ponent =

(unsigned

int)exponent;

if(exponent <0)

double result =

numexponent

(base, ab***ponent)

;//指數小於0,即求整數指數冪的倒數

if(exponent <0)

return result;

}int

main()

執行結果為:

注意:1、遞迴方法裡要注意奇數次冪和偶數次冪兩種情況;

2、位與運算的效率比乘除法的效率高。

數值整數次方

題目 實現函式double power double base,int exponent 求base的exponent次方。不得使用庫函式,同時不需要考慮 大數問題。includebool equal double num1,double num2 double powerwithunsignede...

數值整數次方

題目 實現函式double power double base,int exponent 求base的exponent次方。不得使用庫函式,同時不需要考慮 大數問題。includebool equal double num1,double num2 double powerwithunsignede...

數值的整數次方

題目 實現函式double power double base,int exponent 求base的exponent次方。不得使用庫函式,同時不需要考慮大樹問題。這道題目有以下幾點需要注意 0的0次方是無意義的,非法輸入 0的負數次方相當於0作為除數,也是無意義的,非法輸入 base如果非0,如果...