LeetCode myPow Python3

本文介绍如何使用Python3实现LeetCode中 pow(x, n) 函数,重点在于利用快速幂算法降低时间复杂度从O(n)到O(logn),并给出递归实现的代码示例。" 110243035,10293602,Windows环境下使用micro:bit进行Python编程,"['嵌入式硬件', 'Python开发', '教育', '编程教程', '儿童编程']

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

题目描述: 实现 pow(x, n) 函数,即实现 x 的 n 次幂函数

示例 1:
输入: 2.00000, 10
输出: 1024.00000
示例 2:
输入: 2.00000, -2
输出: 0.25000

这道题直接暴力累乘会超时,比较多用的是快速幂算法,将所求的幂次折半计算,例如:24=22×22,2^4 = 2^2 \times 2^2, 24=22×22, 25=22×22×22^5=2^2\times2^2\times225=22×22×2只需要判断幂次的奇偶即可,因为每用一次幂次折半,所以时间复杂度从 O(n) 降到了 O(logn)。下面是我的递归实现:

def myPow(x, n):
    if n == 0:
        return 1.0
    if n < 0:
        x = 1/x
        n = -n
    def fast(x, n):
        if n == 0:
            return 1.0
        temp = fast(x, n//2)
        if n % 2 == 0:
            return temp * temp
        else:
            return temp * temp * x
    return fast(x, n)
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值