演算法(位運算) 數值的整數次方

2021-08-15 14:24:59 字數 982 閱讀 2017

問題描述:

給定乙個double型別的浮點數base和int型別的整數exponent。求base的exponent次方。

如:base = 2, exponent = 3,  輸出 8.0

思路1:

按指數定義,指數個基數相乘得出結果,注意邊界條件:基數為 0 ,輸出 0 ;指數為 0 ,輸出 1 ;指數為負數,結果取倒數。

public static double power(double base, int exponent) 

double sum = 1;

if(exponent < 0)

for(int i = 0; i < exponent; i++)

return sum;

}

思路2:指數有如下規律:

因此,可以使用遞迴進行求解。為提高效率,可使用移位代替除法,使用與操作判斷奇數。

public static double power(double base, int exponent) 

if(exponent < 0)

return computepower(base, exponent); }

public static double computepower(double base, int exponent)

if(exponent == 1)

double result = computepower(base, exponent >> 1);

result *= result;

if((exponent & 0x1) == 1)

return result;

}

數值整數次方

題目 實現函式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,如果...