pow(x, n) 求x的n次方。
最简单的方法便是计算n个x相乘
public static double pow(double x, int n) { if (n == 0) return 1;
else if (n > 0) return x*pow(x, n-1);
else return pow(x, n+1)/x;
}
该方法计算量较大,如pow(3, 1024)则需要1024次相乘运算。
可以将其简化为pow(9, 512),运算次数减小一半,一直简化
public static double myPow(double x, int n) { if (n==0) return 1;
if (n % 2 == 0) return myPow(x*x, n/2);
else if (n>0) return myPow(x, n-1)*x;
else return myPow(x, n+1)/x;
}