Pow(x, n)
Implement pow(x, n).
计算x的n次方。
解题思路:
考虑到n的值会很大,而且可为正可为负可为0,所以掉渣天的方法就是用递归了。
对了,这题也在《剑指offer》里面有提到,是面试题11:数值的整数次方。可以书里给的递归代码在n为负数的情况下是错误的……他没有考虑到n为奇数时,n是正数和n是负数的情况是不一样的。
这里我摘抄下来,方便以后查询。
double pow(double x, int n) { if (n == 0) return 1.0; // Compute x^{n/2} and store the result into a temporary // variable to avoid unnecessary computing double half = pow(x, n / 2); if (n % 2 == 0) return half * half; else if (n > 0) return half * half * x; else return half * half / x; }