题目:
实现 pow(x, n) ,即计算 x 的 n 次幂函数(即,xn)
double myPow(double x, int n){ if(n == 0){ return 1; } unsigned int nn; double rc = 1; int flag = 1; if(n < 0){ nn = (-1)*(long)n; flag = 0; }else{ nn = n; } int arr[100]; double a[100]; int num = 0; while(nn > 0){ arr[num] = nn&0x01; nn = nn>>1; num++; } a[0] = x; for(int i=1; i<num; i++){ a[i] = a[i-1] * a[i-1]; } for(int i=0; i<num; i++){ if(arr[i] == 1){ rc *= a[i]; } } if(flag == 0){ rc = 1/rc; } return rc; }
上面代码时间复杂度O(logn)
求 xn 最简单的方法是循环将 n 个 x 乘起来,时间复杂度是O(n)