计算a^n的三种对数复杂度算法

18 篇文章 0 订阅

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

第一种方法和第二种方法我比较惊奇,而第三种比较常用的我觉得很简单,因为这就是二进制表示嘛,很正常。

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值