1. 程式人生 > >整數次冪的遞迴求解

整數次冪的遞迴求解

整數次冪一般解法

時間複雜度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; }