整数次幂的递归求解

来源:互联网 发布:北京大学金融大数据 编辑:程序博客网 时间:2024/06/06 02:15

整数次幂一般解法

时间复杂度O(n)的方法可以迭代n次,然后相乘结果返回,例如求xn伪代码:

double pow(x,n){    res=x;    while(n--)        res*=x;    return res;        }

递归法

使用递归的方法可以将复杂度降低到O(logn)
思路是比如一个数的8次幂,可以看成4次幂乘4次幂,进而分成2次幂乘2次幂,如果是奇数,在偶数结果的情况下额外乘上本身。

double myPow(double x, int n){    if (0 == n)        return 1.0;    if (1 == n)        return x;    if (2 == n)        return x*x;    double p = myPow(x, n / 2);    p *= p;    if (n % 2 == 0)//偶数        return p;    else//奇数        return p*x;}
1 0