计算整数的幂——递归算法

幂运算

计算一个整数的幂,常见的算法是使用N-1次自然乘法,但是下面的递归算法可能会更好一些,如果N是偶数,有X^N = X^(N/2) * X^(N/2),

如果X是奇数,那么有X^N = X^((N-1)/2) * X^((N-1)/2) * X。下面正是这种算法的实现:

long int
Pow(long int X, unsigned int N){
        if(N == 0)
             return 1;
        if(N == 1)
             return X;
        if(isEven(N))
             return Pow(X*X, N/2);
        else
             return Pow(X*X, N/2)*X;
}            

显然,所需要的乘法次数最多是2logN,用为把问题分成了最多需要两次乘法。

posted @ 2020-01-14 21:11  Baby-Lily  阅读(959)  评论(0编辑  收藏  举报