面試題11 數值的整數次方

2021-07-03 12:09:52 字數 1001 閱讀 8712

/*

面試題11

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

需要考慮的是當輸入的指數(exponent)為0或負數的情況。

*/bool g_invalidinput=false;//採用全域性變數來標識是否出錯

double power(double base,int exponent)

unsigned 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)

//在計算機內表示小數時(float和double型小數)都有誤差。判斷兩個小數是否相等,只能判斷它們的絕對值是否在乙個很小的範圍之內。

bool equal(double num1,double num2)

//在上面的求指數函式中,如果exponent為32,則要計算31次乘法。如果換一種思路,乙個數的32次方,只要知道16次方再求平方即可,依次類推,只要五次乘法:先求///平方,再求4次方,8次方,16次方,32次方。

//新的遞迴實現的powerwithunsignedexponent**如下

double newpowerwithunsignedexponent(double base,unsigned int exponent)

//測試用例包括:底數和指數分別設為正數,負數和零。

面試題11 數值的整數次方

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

面試題11 數值的整數次方

這個問題我想很多人拿到之後直接設定乙個for迴圈,讓底數自乘次方和次數就行。但是沒有考慮到底數是0 指數是0 以及指數是負數的情況 coding utf 8 不得使用庫函式,實現數值的整數次方 def power base,exponent answer 1.0 if isequaltozero b...

面試題11數值的整數次方

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