文章目录
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
if n
< 0:
flag
= 1
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:
return x
* self
.myPow
(x
, n
-1)
return self
.myPow
(x
* x
, n
>>1)
4. 总结
做算法,数学知识还是挺重要的。可是吧,数学这东西不用就忘了,所以还是要多刷题,保持住才行。
5. 参考文献
[1] 剑指offer丛书 [2] 剑指Offer——名企面试官精讲典型编程题