参考文章:快速幂算法
此文篇幅相对来讲已经较短,但文字仍然太多,我试图用一个例子来说明快速幂算法的核心思想:
pow(3,13) //幂为奇数,前乘底数 -------13次累乘
= 3*pow(9,6) //幂为偶数,不前乘底数------1次循环
= 3*pow(81,3) //幂为奇数,前乘底数--------2次循环
= 3*81*pow(81*81,1) //幂为奇数,前乘底数--------3次循环
= 3*81*81*81*pow(81*81*81*81,0) //幂为0,退出循环---------4(log13)次循环
这里的log其实就是指数次幂13在不断>>1的结果
13->6 1次
6->3 2次
3->1 3次
1->0 4次
遍历次数O(13)->O(4)
时间复杂度O(n)->O(logn)
所以多次幂pow(a,n)的计算,时间复杂度由O(n)降为O(logn)
故名 快速幂算法