题目描述
实现 pow(x, n) ,即计算 x 的 n 次幂函数。
示例1:
输入: 2.00000, 10 输出: 1024.00000
示例2:
输入: 2.00000, -2 输出: 0.25000 解释: 2-2 = 1/22 = 1/4 = 0.25
思路
1.一个数的负数幂等于1除以这个数的正数幂,例如:2^-4 = 1/(2^4)*。
2.若N是偶数,则 x^N = (x^N/2 ) (x ^ N/2);若N是奇数,则 x^N = (x^N/2 )* (x ^ N/2)*x。
3.所有自然数的0次幂等于1.0。
4.可以使用递归,快速求出x的N次幂。
Java代码实现
public double myPow(double x, int n) { x = n >= 1 ? x : (1.0/x); return myPowFast(x,Math.abs(n)); } private double myPowFast(double x ,int n){ if(n == 0) return 1.0; double half = myPowFast(x,n/2); if(n % 2 == 0) return half*half; else return half*half*x; }
Golang代码实现
func myPow(x float64, n int) float64 { if n == 0{ return 1.0 } flag := false if n<0 { n = -n flag = true } res := 0.0 half := myPow(x,n/2) if n%2 == 0{ res = half*half }else { res = half*half*x } if flag{ res = 1/res } return res }