题目
实现 pow(x, n) ,即计算 x 的 n 次幂函数(即,xn)。不得使用库函数,同时不需要考虑大数问题。
思路1
第一种是将整数n变成二进制的形式,再对x进行快速幂计算
代码
class Solution {public double myPow(double x, int n) {if(x == 0) return 0;long b = n;double res = 1.0;if(b < 0) {x = 1 / x;b = -b;}while(b > 0) {if((b & 1) == 1) res *= x;x *= x;b >>= 1;}return res;}}
思路二
利用分治思想,直接递归计算
public double myPow(double x, int n) {if(n == 0) return 1;if(n == 1) return x;if(n == -1) return 1 / x;double half = myPow(x, n / 2);double mod = myPow(x, n % 2);return half * half * mod;}
