文章目录

  • 题目描述
    • 解答思路

题目描述

给定一个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]:数值的整数次方(循环解答,快速幂---递归、循环)相关推荐

  1. 剑指offer.数值的整数次方

    实现函数double Power(double base, int exponent),求base的 exponent次方.不得使用库函数,同时不需要考虑大数问题. 注意: 不会出现底数和指数同为0的 ...

  2. 剑指offer16. 数值的整数次方P110

    剑指offer16. 数值的整数次方P110 题目:实现函数double Power(double base, int exponent),求base的exponent次方.不得使用库函数,同时不需要 ...

  3. 数值的整数次方-c语言快速幂

    数值的整数次方-c语言快速幂 实现 pow(x, n) ,即计算 x 的 n 次幂函数(即,xn).不得使用库函数,同时不需要考虑大数问题. 示例 1: 输入:x = 2.00000, n = 10 ...

  4. double取整数部分_剑指offer_16_数值的整数次方

    //面试题16.数值的整数次方 //题目:实现函数double Power(double base,int exponent),求base的exponent次方. //不得使用库函数,同时需要考虑大数 ...

  5. 剑指offter27. 数值的整数次方-java实现

    本文中讨论了三种解法 详细的介绍了快速幂对于指数是负数的情况,同时指数的范围的Int 的负极限 原题链接 实现函数double Power(double base, int exponent),求ba ...

  6. 剑指Offer_12_数值的整数次方

    题目描述 给定一个double类型的浮点数base和int类型的整数exponent.求base的exponent次方. 解题思路 当exponent为0时,返回1,当exponent大于0,那么循环 ...

  7. 剑指offer-11.数值的整数次方实现power

    0 题目 给定一个double类型的浮点数base和int类型的整数exp.求base的exp次方. 1 分析 输入的exp指数可能是负数,base可能是0.但因为是double所以不能用等号判断 另 ...

  8. 剑指offer 数值的整次方

    题目描述 给定一个double类型的浮点数base和int类型的整数exponent.求base的exponent次方. 解决方案: public class Solution {public dou ...

  9. 2021-07-11剑指offer16.数值的整数次方

    class Solution {public double myPow(double x, int n) {if(x == 0) return 0;//考虑到特殊的情况,如果为零就直接返回,否则可能会 ...

  10. 剑指offer II 001.整数除法

    剑指 Offer II 001. 整数除法 整数除法 题目链接 题目要求: 给定两个整数 a 和 b ,求它们的除法的商 a/b ,要求不得使用乘号 '*'.除号 '/' 以及求余符号 '%' . 注 ...

最新文章

  1. 距离度量:闵氏、欧式、马氏、余弦、汉明等
  2. JIRA 5.0.1 发布
  3. 如何查看Activity任务栈以及dumpsys_activity命令的简要使用及介绍
  4. SQL Server 2005中的分区表(四):删除(合并)一个分区
  5. 【项目管理】项目进度管理的关键路径
  6. 服务器存储满了进不去系统,解决PC常见问题 篇四十五:建议收藏!手贱升级进不去系统?两步简单恢复黑群晖!...
  7. 2018年流行的vue前端UI框架
  8. 压缩JavaScript的宏
  9. 201671010129 2016—2017—2 《Java程序设计》Java总结
  10. 利用Python中的GDAL和OGR模块实现shapefile对栅格DEM数据的裁剪
  11. flutter系列之flutter工程如何与android混编
  12. 浅析 Linux 初始化 init 系统(3) Systemd
  13. 归并排序算法(java实现)
  14. python mp4提取音频,利用python提取视频中的音频
  15. 如何解决苹果账号续费时支付失败的问题
  16. 计算机毕业设计、课程设计之[含论文+源码等]S2SH+mysql的报刊订阅系统[包运行成功]
  17. 沃顿商学院自我管理课——完美融合
  18. cad两直线相交画圆弧,CAD 两直线,怎么用圆弧连接?
  19. 使用pyspark 分析日志
  20. 真无线蓝牙耳机选购小技巧!2020五款优秀低延迟蓝牙耳机推荐

热门文章

  1. 软考高级软件架构师论文——论软件架构评估
  2. java配置ssm_不用xml 配置文件,纯粹使用java配置类搭建SSM项目
  3. android studio新手吧,Android studio新手使用常见一些问题及解决方法
  4. 大数据分析、机器学习、智能化等概念梳理
  5. 防止matplotlib画完图后自动关闭
  6. MOS与三极管的控制使用简介
  7. Java基础(数组)对象数组、有条件找出最大值对象
  8. mybatipse 下载_Windows实用软件推荐(2)——下载工具
  9. 【计算机毕业设计】77.旅游资源网站源码
  10. ubuntu如何在多个工作区之间自由切换以及添加返回桌面图标