題目:實(shí)現(xiàn)函數(shù)
double Power(double base, int exponent)
翅溺,求base的exponent次方第喳。不得使用庫(kù)函數(shù)盒延,同時(shí)不需要考慮大數(shù)問題。
Java代碼如下:
package demo;
public class Test10 {
public static double power(double base, int exponent) {
if(base == 0 & exponent == 0) {
throw new RuntimeException("invalid input. base and exponent are both zero!");
}
if(base == 0 & exponent < 0) {
return 0.0;
}
// 求冪次方
double result = powerWithUnsignedExponent(base, Math.abs(exponent));
if(exponent < 0) {
result = 1 / result;
}
return result;
}
/**
* 求正整數(shù)次冪
* @param base
* @param exponent
* @return
*/
private static double powerWithUnsignedExponent(double base, int exponent) {
if(exponent == 0) {
return 1;
}
if(exponent == 1) {
return base;
}
// 遞歸求一半的值
double result = powerWithUnsignedExponent(base, exponent >> 2);
result *= result;
if(exponent % 2 != 0) {
result *= base;
}
return result;
}
public static void main(String[] args) {
// 運(yùn)行結(jié)果為false滤港,說明可以直接用 == 表示2個(gè)小數(shù)是否相等
System.out.println(0.00000000000000000000000000000000000000000000001 == 0.0);
// 運(yùn)行結(jié)果為true廊蜒,說明寫成0或者0.0都可以
System.out.println(0 == 0.0);
System.out.println(power(2, 4));
System.out.println(power(2, -4));
System.out.println(power(-2, 4));
System.out.println(power(-2, -4));
System.out.println(power(2, 0));
System.out.println(power(0, -4));
// System.out.println(power(0, 0));
System.out.println(power(0.0000000000000000000000000000000000000001, 0));
}
}
運(yùn)行結(jié)果