请实现函数 pow(x, n)。实现x的n次方。
思路:二分的思路来实现n次方,比遍历的次数要少,使用了递归。注意如果是负数,需要用1除整数的结果来返回。
package main
/**
*
* @param x double浮点型
* @param n double浮点型
* @return double浮点型
*/
func pow( x float64 , n float64 ) float64 {
// write code here
var res float64 = 1
if x == 0 || n == 0 {
return res
}
if n < 0 {
return 1 / pow(x, -n)
}
newN := int(n)
tmp := pow(x, float64(newN/2))
if newN%2 != 0 {
res = tmp * tmp * x
} else {
res = tmp * tmp
}
return res
}