https://leetcode-cn.com/problems/shu-zhi-de-zheng-shu-ci-fang-lcof/
题目就是求解a的b次方的结果返回即可!使用整数幂的思想,满足下面的规则的:
2 ^ n = 2 ^(n/2) * 2 ^ (n/2); //当n为偶数
2 ^ n = 2 ^ (n -1) * 2; //当n为奇数
递归实现即可!其中再n为偶数的时候,需要首先将值保留一份,然后进行乘,不可以写两个递归,否则会超时!
实现的代码如下:实现的语言为Javascript;
/**
* @param {number} x
* @param {number} n
* @return {number}
*/
let res = 1;
var myPow = function(x, n) {
if(n < 0) {
n = -n;
let ans = powTwo(x, n);
return 1/ans;
}
return powTwo(x, n);
};
var powTwo = function(x, n) {
if(n === 0 ) {
return 1;
}
if((n & 1) === 0) {
let ans = powTwo(x, n / 2);
res = ans * ans;
}
if((n & 1) === 1) {
res = powTwo(x, n - 1) * x;
}
return res;
}