问题:实现 pow(x, n) ,即计算 x 的 n 次幂函数(即,xn)。其中-231 <= n <= 2^31-1
**递归实现
算法思想:比如计算x的n次幂(n为偶数),可以先做x的n/2次幂,这样由二分的思想可以将算法复杂度降到log(n)
但同时还有很多细节需要考虑:
1)幂次为奇数如何处理,可以先算幂次的一半,然后再乘以底数
2)如果n为负数如何处理,可以将参数设置为-n,然后最后返回结果的倒数
`#includeusing namespace std; class Solution { public: double quickMul(double x, long long N) { if (N == 0) { return 1.0; } double y = quickMul(x, N / 2); return N % 2 == 0 ? y * y : y * y * x; } double myPow(double x, int n) { long long N = n; return N >= 0 ? quickMul(x, N) : 1.0 / quickMul(x, -N); } }; int main(){ int x,n; cin>>x>>n; Solution s; cout< 迭代实现
算法思想:将N进行二进制拆分,x的N次幂就可以写成x的每个二进制位次幂之积#includeusing namespace std; double quickmul(int x,long long N){ double ans=1.0;//1.0 int x_contribute=x; while(N>0){ if(N%2==1){ ans*=x_contribute; } x_contribute*=x_contribute; N/=2; } return ans; } double mypow(int x,int n){//double long long N=n; return N>0? quickmul(x,N): 1.0/quickmul(x,-N);//1.0 } int main(){ int x,n; cin>>x>>n; cout<



