「剑指Offer [Python] 」系列博文,「转载」思路详细易懂的、python语言的众大神博文,加之对各方资料进行「整理 & 汇总」,「学习 & 对比」多种思路。
今天是第12题 —— 数值的整数次方。
❤️ 「更多题目」
题目
给定一个double类型的浮点数base和int类型的整数exponent。求base的exponent次方。
一、最直接的方法
- Python 实现
# -*- coding:utf-8 -*-
class Solution:
def Power(self, base, exponent):
# write code here
return base ** exponent
二、用循环?
- 思路
分情况讨论整数exponent:
(1)若大于等于0,直接循环;
(2)若为负数,转换成正数的情况求出结果,再取倒数。
- Python 实现
# -*- coding:utf-8 -*-
class Solution:
def Power(self, base, exponent):
# write code here
res = 1
if exponent >= 0:
for i in range(exponent):
res *= base
return res
if exponent < 0:
for i in range(-exponent):
res *= base
return 1/res
三、优化的算法 —— 递归
- 思路
- Python 实现
# -*- coding:utf-8 -*-
class Solution:
def Power(self, base, exp):
if exp < 1:
return 1 / self.getPower(base, -exp)
else:
return self.getPower(base, exp)
def getPower(self, base, exp):
if exp == 0:
return 1
elif exp == 1:
return base
res = self.Power(base, exp >> 1)
res *= res
if exp & 1 == 1:
res *= base
return res
---------------------
作者:负雪明烛
来源:CSDN
原文:https://blog.csdn.net/fuxuemingzhu/article/details/79514575
版权声明:本文为博主原创文章,转载请附上博文链接!
个人觉得,考场上第三种方法未必能想到,还是掌握前两种比较基础。