快速幂的两种算法,递归与迭代

快速幂有两种算法
假如要求x的77次方
递归实现过程是
1.判断77是否奇数,是奇数,则求38的平方+1
2.判断38是否是奇数,是偶数,则求19的平方

3.直到递归到0的平方,为1,逐次返回

迭代的实现过程
把N,看作一个二进制数,就用77,二进制是(1001101),所谓贡献x_contribute其实并不好理解,我推荐理解为权重,一开始权重为x的一次方。我们开始。
77除以2余1,既是77二进制的第一位是1,所以我们要把ans乘上我们的权重x_contribute(如果是0则不用乘)
第一位就结束了。我们再转移到第二位的权重.
让N除以2,即将二进制右移。
让x_contribute自乘,即提升权重。
再从第二位开始重复第一位的步骤。直到N为0。
其实思想是跟递归一样的。

上一篇:Gof的23种设计模式


下一篇:欧拉筛(线性筛质数)