LeetCode OJ 之 Pow(x, n) (求x^n)

来源:互联网 发布:淘宝网开网店步骤流程 编辑:程序博客网 时间:2024/05/17 04:48

题目:

Implement pow(xn).

计算 x^n 。

思路:

1、迭代,二分的时候计算出计算次数。

2、递归, x ^n = x ^(n /2) × x^ (n /2) × x ^(n% 2)

代码1(迭代)

class Solution {public:    double pow(double x, int n)    {    long double result = 1.0;    if(n == 0)    return 1;    int count = 1;    int m = abs(n);    while(m > 0)    {    long double tmp = x;    for(int i = m / 2; i != 0 ; i /= 2)    {    count *= 2;//计算次数    tmp *= tmp;    }    m = m - count;    count = 1;    result *= tmp;    }    if(n < 0)    result = 1.0 / result;    return result;    }};

代码2(递归):

class Solution {public:    double pow(double x, int n)    {    if(n == 0)            return 1;        if(n<0)        {            n = -n;            x = 1/x;        }        return (n%2 == 0) ? pow(x*x, n/2) : x*pow(x*x, n/2);    }};



0 0
原创粉丝点击