题目:
思路一:借用leetcode上大佬的解释

class Solution:
def myPow(self, x: float, n: int) -> float:
#采用位运算的方法
if n<0:
n=-n
x=(1/x)
# 同时关注x=0的情况
result=1
# n仍然代表相应的整数
while n:
# 取n对应的二进制,index=0位置上的数(因为进行与按位运算的相应位也只有“1”一个数)
if n & 1:
# 对应指数位置上为1就乘上x
result*=x
# 右移动一位,x就自身平方一次
n>>=1
x*=x
return result
思路2:递归的思想
- 如果n = 0 return 1;
- 如果n是负数,return 1 / digui( x , -n )
- n=奇数,return x * digui( x的n-1次方 );
- n=偶数,return digui( x*x , (n//2) ).
这篇博客探讨了两种解决指数计算的方法。思路一是通过位运算优化,当n为负数时转换为正数并求倒数,然后利用二进制特性进行快速幂运算。思路二是使用递归思想,考虑n的正负、奇偶性,分别处理n=0、n为负数和n为奇偶数的情况。这两种方法都有效地提高了计算效率。
543

被折叠的 条评论
为什么被折叠?



