[剑指Offer]:数值的整数次方(循环解答,快速幂---递归、循环)
文章目录
- 题目描述
- 解答思路
题目描述
给定一个double类型的浮点数base和int类型的整数exponent。求base的exponent次方。
保证base和exponent不同时为0
示例:
输入
2,3返回值
8.00000
解答思路
- 检查底数是否为0,如果底数为0,无论指数多少,算式是无意义的!!!
- 当exponent为0时,任何数0次方为1,直接返回1;
- 判断exponent是否小于0,如果小于0,通过标志位flag记录,将exponent转化成正数
- 循环计算正数次方下的底数次幂。
- 当标志位flag < 0时,将res取倒数。
注意:不要分别在exponent大于0,小于0条件下分别计算base的abs(exponent)次方,这样出现重复计算,使复杂度增加
代码实现:
class Solution {public:double Power(double base, int exponent) {if(fabs(base - 0.0) < 1e-15){cout << "底数是0无意义" << endl;return 0.0;}double res = 1.0, flag = 1.0;if(exponent == 0) return res;else if(exponent < 0){flag = -1.0;exponent = fabs(exponent);}for(int i = 1; i <= exponent; ++i){res *= base;}return flag > 0 ? res : 1.0 / res;}
};
快速幂
使用递归,时间复杂度O(logn)
- 当n为偶数,an = an/2 * an/2
- 当n为奇数,an = a(n-1)/2 * a(n-1)/2 *a
class Solution {public:double Power(double base, int exponent) {if(fabs(base - 0.0) < 1e-15){cout << "底数是0无意义" << endl;return 0.0;}double res = 1.0, flag = 1.0;if(exponent == 0) return res;else if(exponent < 0){flag = -1.0;exponent = fabs(exponent);}// else if(exponent == 1) return base;// res *= Power(base, exponent>>1);// res *= res;// if(exponent & 0x1) res *= base;// 也可以用递归做,这里采用了循环while (exponent) {if (exponent & 0x1) res *= base;base *= base;exponent >>= 1;}return flag > 0 ? res : 1.0 / res;}
};
[剑指Offer]:数值的整数次方(循环解答,快速幂---递归、循环)相关推荐
- 剑指offer.数值的整数次方
实现函数double Power(double base, int exponent),求base的 exponent次方.不得使用库函数,同时不需要考虑大数问题. 注意: 不会出现底数和指数同为0的 ...
- 剑指offer16. 数值的整数次方P110
剑指offer16. 数值的整数次方P110 题目:实现函数double Power(double base, int exponent),求base的exponent次方.不得使用库函数,同时不需要 ...
- 数值的整数次方-c语言快速幂
数值的整数次方-c语言快速幂 实现 pow(x, n) ,即计算 x 的 n 次幂函数(即,xn).不得使用库函数,同时不需要考虑大数问题. 示例 1: 输入:x = 2.00000, n = 10 ...
- double取整数部分_剑指offer_16_数值的整数次方
//面试题16.数值的整数次方 //题目:实现函数double Power(double base,int exponent),求base的exponent次方. //不得使用库函数,同时需要考虑大数 ...
- 剑指offter27. 数值的整数次方-java实现
本文中讨论了三种解法 详细的介绍了快速幂对于指数是负数的情况,同时指数的范围的Int 的负极限 原题链接 实现函数double Power(double base, int exponent),求ba ...
- 剑指Offer_12_数值的整数次方
题目描述 给定一个double类型的浮点数base和int类型的整数exponent.求base的exponent次方. 解题思路 当exponent为0时,返回1,当exponent大于0,那么循环 ...
- 剑指offer-11.数值的整数次方实现power
0 题目 给定一个double类型的浮点数base和int类型的整数exp.求base的exp次方. 1 分析 输入的exp指数可能是负数,base可能是0.但因为是double所以不能用等号判断 另 ...
- 剑指offer 数值的整次方
题目描述 给定一个double类型的浮点数base和int类型的整数exponent.求base的exponent次方. 解决方案: public class Solution {public dou ...
- 2021-07-11剑指offer16.数值的整数次方
class Solution {public double myPow(double x, int n) {if(x == 0) return 0;//考虑到特殊的情况,如果为零就直接返回,否则可能会 ...
- 剑指offer II 001.整数除法
剑指 Offer II 001. 整数除法 整数除法 题目链接 题目要求: 给定两个整数 a 和 b ,求它们的除法的商 a/b ,要求不得使用乘号 '*'.除号 '/' 以及求余符号 '%' . 注 ...
最新文章
- 距离度量:闵氏、欧式、马氏、余弦、汉明等
- JIRA 5.0.1 发布
- 如何查看Activity任务栈以及dumpsys_activity命令的简要使用及介绍
- SQL Server 2005中的分区表(四):删除(合并)一个分区
- 【项目管理】项目进度管理的关键路径
- 服务器存储满了进不去系统,解决PC常见问题 篇四十五:建议收藏!手贱升级进不去系统?两步简单恢复黑群晖!...
- 2018年流行的vue前端UI框架
- 压缩JavaScript的宏
- 201671010129 2016—2017—2 《Java程序设计》Java总结
- 利用Python中的GDAL和OGR模块实现shapefile对栅格DEM数据的裁剪
- flutter系列之flutter工程如何与android混编
- 浅析 Linux 初始化 init 系统(3) Systemd
- 归并排序算法(java实现)
- python mp4提取音频,利用python提取视频中的音频
- 如何解决苹果账号续费时支付失败的问题
- 计算机毕业设计、课程设计之[含论文+源码等]S2SH+mysql的报刊订阅系统[包运行成功]
- 沃顿商学院自我管理课——完美融合
- cad两直线相交画圆弧,CAD 两直线,怎么用圆弧连接?
- 使用pyspark 分析日志
- 真无线蓝牙耳机选购小技巧!2020五款优秀低延迟蓝牙耳机推荐
热门文章
- 软考高级软件架构师论文——论软件架构评估
- java配置ssm_不用xml 配置文件,纯粹使用java配置类搭建SSM项目
- android studio新手吧,Android studio新手使用常见一些问题及解决方法
- 大数据分析、机器学习、智能化等概念梳理
- 防止matplotlib画完图后自动关闭
- MOS与三极管的控制使用简介
- Java基础(数组)对象数组、有条件找出最大值对象
- mybatipse 下载_Windows实用软件推荐(2)——下载工具
- 【计算机毕业设计】77.旅游资源网站源码
- ubuntu如何在多个工作区之间自由切换以及添加返回桌面图标