快速幂 递归实现

博客介绍了快速幂算法的递归实现,通过将求解xn的问题分解为求解xn/2的平方,大大降低了时间复杂度至O(log2n)。通过递归方式解决28的例子展示了该算法的工作原理。
摘要由CSDN通过智能技术生成

快速幂 递归实现

计算一个double的整数次方,有很多种方法
可以使用一个循环,乘n次,时间复杂度为O(n)
快速幂可以实现复杂度为O(log2n)

求取浮点数xn(整数)次方,可以转换为求取xn/2(整除)次方,因为不论n是奇数还是偶数,都有

xn = xn/2 * xn/2 (n为偶数)

xn = xn/2 * xn/2 * x (n为奇数)

例:求取28
一般朴素算法是:

28 = 2 * 2 * 2 * 2 * 2 * 2 * 2 * 2

快速幂是:

28 = 24 * 24

24 = 22 * 22

22 = 21 * 21

21 = 20 * 2 (递归终止条件:n==0)

可以看到时间复杂度控制在O

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值