/*
面試題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,如果...