高效幂算法

来源:互联网 发布:哪些排序算法不稳定 编辑:程序博客网 时间:2024/05/21 15:47

《数据结构与算法分析》mark.Allen.weiss中提供的分治算法

(美) Mark Allen Weiss

       计算一个整数的幂 XN   的常见算法是使用 N-1 次乘法自乘。然而我们可以找到更好的算法。可以应用这样一种递归算法:如果 N 是偶数,有XN=XN/2 * X N/2  , 如果 N 是奇数,则有 X=X (N-1)/2 * X (N-1)/2 * X 。

       为了说明这个算法为什么更高效,我们举一个例子。例如计算 X62    ,用第一种的常见算法我们要做61次自乘。而用第二种算法只要做9次乘法:

        X3=(X2)X  ,  X7=(X3)2X  ,  X15=(X7)2X  ,  X31=(X15)2X  ,  X62=(X31)2

         因为求 X3   X7 X15 X31 各做了两次乘法,最后求 X62 又做了一次乘法,总共就是9次。


#include<iostream>using namespace std;long pow_s(int x, int n)//x的n次方{if (n == 0){return 1;}if (n == 1){return x;}if (n % 2 == 0){return pow_s(x*x, n / 2);}else{return pow_s(x*x, n / 2)*x;}}


0 0
原创粉丝点击