【剑指Offer】数值的整数次方 解题报告(Python)

标签(空格分隔): LeetCode


题目地址:https://www.nowcoder.com/ta/coding-interviews

题目描述:

给定一个double类型的浮点数base和int类型的整数exponent。求base的exponent次方。

Ways

方法一:

使用循环去做。

题目中已经明确了exponent是整数。这里要考虑的是整数可能是0或者负数。

当其是正数的情况很简单,直接循环就能搞定。

当其为负数的时候,可以先求出其绝对值的结果,再取倒数。

当其为0的时候,直接返回0即可。

# -*- coding:utf-8 -*-
class Solution:
def Power(self, base, exponent):
if exponent < 1:
return 1 / self.getPower(base, -exponent)
else:
return self.getPower(base, exponent) def getPower(self, base, exponent):
if base == 0:
return 0
elif exponent == 1:
return base
res = 1
for i in range(exponent):
res *= base
return res

方法二:

对求正数次方的解法可以做一个优化:

这样就类似于一个求费布拉奇数列的解法,使用递归能比较快速的求出整数次方。

# -*- 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

Date

2018 年 3 月 11 日

最新文章

  1. eclipse插件汇总
  2. 循环遍历泛型集合List绑定到table
  3. Linux之curl命令详解
  4. Kinetic使用注意点--collection
  5. java pdu短信解码
  6. Android 开发第四天
  7. 获取文件路径 分类: WinForm 2014-07-25 14:27 103人阅读 评论(0) 收藏
  8. 大端模式&amp;小端模式、主机序&amp;网络序、入栈地址高低问题
  9. IOS设备对position的支持性
  10. Git时光机穿梭之删除文件
  11. JavaScript操作符(布尔操作符、乘性操作符和加性操作符)
  12. php 日历代码
  13. spring xml配置注入改为手动注入过程
  14. Matlab中要显示数学公式或符号Latex
  15. 跟bWAPP学WEB安全(PHP代码)--PHP代码注入
  16. 添加新内容的四个 jQuery 方法:append,prepend,after,before
  17. 在jenkins里使用SCM管理jenkinsfile
  18. OpenGL学习(hello)
  19. Socket调用方式(同步,异步,阻塞,非阻塞)
  20. C#字符串(Sring)操作

热门文章

  1. 笔记Mysql(1)
  2. Celery进阶
  3. Spring同一个类中的注解方法调用AOP失效问题总结
  4. Android 开源框架Universal-Image-Loader加载https图片
  5. Linux学习 - 正则表达式
  6. 神器Tampermonkey的安装使用
  7. 【Linux】【Services】【SaaS】Docker+kubernetes(5. 安装和配置ETCD集群)
  8. 【C/C++】函数的默认参数/函数的占位参数/函数重载/注意事项
  9. java 多线程的状态迁移 常用线程方法分析
  10. 莫烦python教程学习笔记——validation_curve用于调参