1.递归解决
a^n= (a ^(n/2)) ^2 ,n为偶数
a^n= (a ^((n-1)/2)) ^2*a,n为奇数
n==0时返回
2和3用n的二进制表示来说明
2.从左向右
假设n=13,即1101
下面是求a的幂的步骤:
0->1->10->11->110->1100->1101
每次个位+1是*a,后面添0是平方。
3.从右向左(快速幂)
1101每一位表示的是a^8 a^4 a^2 a^1
位置上是1就乘上,位置是0则跳过这一位
可以设置一个temp=a,每移动一位,temp=temp*temp
第一种方法和第二种方法我比较惊奇,而第三种比较常用的我觉得很简单,因为这就是二进制表示嘛,很正常。