本文主要是介绍50. Pow(x,n),希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
题目:
解答:
主要是求 n > 0 n > 0 n>0 的情况的计算,其他时候,可以通过转换得到。
而 n > 0 n > 0 n>0 的情况下,
n = a 0 2 0 + a 1 2 1 + a 2 2 2 … a m 2 m n = a_0 2^0 + a_1 2^1 + a_2 2^2 \ldots a_m 2^m n=a020+a121+a222…am2m
x n = x a 0 2 0 + a 1 2 1 + a 2 2 2 … a m 2 m x^n = x^{a_0 2^0 + a_1 2^1 + a_2 2^2 \ldots a_m 2^m} xn=xa020+a121+a222…am2m
故可以拆开递归求解
代码:
class Solution {
public:double myPow(double x, int n) {if( n == 0 ) return 1;else if( n > 0 ) {double ans = 1.0;while( n > 0 ) {if( n % 2 == 1 ) ans *= x;x = x * x;n = n / 2;}return ans;}else if( n == -2147483648 )return 1.0 / ( myPow( x,2147483647 ) * x );else return 1.0 / myPow( x,-n );}
};
更新会同步在我的网站更新(https://zergzerg.cn/notes/webnotes/leetcode/index.html)
这篇关于50. Pow(x,n)的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!