LeetCode50. Pow(x,n)

本文介绍了一种快速计算指数幂的方法,通过递归将幂运算分解为较小幂的平方,利用位操作提高效率,并附带了Python实现代码。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

题目大意:实现一个计算机中求指数幂的操作。

题目分析:我觉得这道题是不需要考虑大数问题的,因为如果幂取到2^30的级别,底数取2的话,这个结果是无法用float或double表示的。本题在计算过程中需要优化,常规的解法会出现内存不够的情况。我们知道,求a的n次方,可以用以下公式来表示:


当n为偶数时,就是第一种情况;当n为奇数时,是第二种情况。同时,可以用n>>1位操作代替除以2,效率更高。判断是否是奇数,等价于判断n&0x1是否为1。

代码展示:

class Solution(object):
    def myPow(self, x, n):
        absn = n
        if n<0:
            absn = -n;
        result = self.power(x,absn)
        if n<0:
            result = 1.0/result
        return result
    
    def power(self,x,absn):
        if absn==0:
            return 1
        elif absn==1:
            return x
        result = self.power(x,absn>>1)
        result *= result
        if(absn&0x1):
            result *= x
        return result

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值