剑指offer系列-面试题-16 - 数值的整数次方 (python)

mac2026-08-27  10

文章目录

1. 题目2. 解题思路2.1 普通思路2.2 活用数学知识 3. 代码实现3.1 普通思路3.2 活用数学知识 4. 总结5. 参考文献

1. 题目

实现函数double Power(double base, int exponent),求base的exponent次方。不得使用库函数,同时不需要考虑“大数问题“。

2. 解题思路

2.1 普通思路

直接循环做乘法。

2.2 活用数学知识

当exponent为偶数时:x ** n = (x ** 2)** (n//2) 当exponent为奇数时:x ** n = x * (x ** (n-1)),此时的n-1为偶数,用上面的方法

3. 代码实现

3.1 普通思路

class Solution: def myPow(self, x, n): result = 1 flag = 0 # 表示n为正整数 if n < 0: flag = 1 # 表示n为负整数 n = -1 * n for _ in range(n): result *= x if flag: return 1 / result return result

3.2 活用数学知识

class Solution: def myPow(self, x, n): if n < 0: return 1 / self.myPow(x, -1 * n) if n == 0: return 1 if n == 1: return x if n & 1: # exponent为奇数 return x * self.myPow(x, n-1) return self.myPow(x * x, n>>1)

4. 总结

做算法,数学知识还是挺重要的。可是吧,数学这东西不用就忘了,所以还是要多刷题,保持住才行。

5. 参考文献

[1] 剑指offer丛书 [2] 剑指Offer——名企面试官精讲典型编程题

最新回复(0)