题目:

实现求base的exponent次方

知识点:

  • 判断奇数还是偶数,a&1==1;
  • 某数除以二,a >>= 1;
  • a>0? res=1:res=2,当满足条件时,选前者否则后者

注意:

  • 尽量考虑多种情况
    -代码规范:清晰书写、清晰布局、合理命名
    代码完整性:功能测试、边界测试、负面测试

代码实现:

  1. 常规方法(全面但不太高效):
  2. 新思路(利用半半思想):分奇数偶数去讨论,奇数先给它赋值一次将其转化成偶数
//方法一
/*绝对值的pow*/
double powerWithAbsExponent(double base, unsigned int absExponent)
{double result = 1.0;for (int i = 0; i < absExponent; ++i){result *= base;}return result;
}
/*总power*/
double Power(double base, int exponent) {//定义一个输入是否有效的全局变量bool isInvalidInput = false;if (base == 0 && exponent < 0){isInvalidInput = true;return 0.0;}//转换exponent为绝对值if (exponent < 0){unsigned int absExponent = (unsigned int)(-exponent);double result = powerWithAbsExponent(base, absExponent);return 1 / result;}unsigned int absExponent = (unsigned int)(exponent);double result = powerWithAbsExponent(base, absExponent);return result;
}//方法二
double power(double base, int exponent)
{double res = 1, cur = base;int absExponent;//特殊情况if (base == 0 && exponent < 0){throw "Error!";}//根据指数分情况if (exponent == 0)return res;else if (exponent < 0)absExponent = -exponent;elseabsExponent = exponent;//讨论如何计算while (absExponent != 0){//若为奇数,先给它乘个自己if ((absExponent & 1) == 1)res *= cur;cur *= cur;    //加倍absExponent >>= 1;  //除2}if (exponent < 0)return 1 / res;return res;
}
int main()
{double res = power(2, -3);cout <<res << endl;getchar();return 0;
}

剑指offer——16.数值的整数次方相关推荐

  1. 【LeetCode】剑指 Offer 16. 数值的整数次方

    [LeetCode]剑指 Offer 16. 数值的整数次方 文章目录 [LeetCode]剑指 Offer 16. 数值的整数次方 package offer;public class Soluti ...

  2. 【附可运行代码】剑指 Offer 16. 数值的整数次方

    立志用最少的代码做最高效的表达 实现 pow(x, n) ,即计算 x 的 n 次幂函数(即,xn).不得使用库函数,同时不需要考虑大数问题. 示例 1: 输入:x = 2.00000, n = 10 ...

  3. 剑指 Offer 16. 数值的整数次方

    思路:快速幂模板,主要要注意负数的范围,乘以负一的时候会溢出,所以开一下longlong class Solution { public:double myPow(double x, int n) { ...

  4. 【LeetCode笔记】剑指 Offer 16. 数值的整数次方(Java、分治)

    文章目录 题目描述 思路 && 代码 二刷 题目描述 很棒的题目!便于分治思想的理解! 思路 && 代码 分情况是大头- 递归结束的情况: x0x^0x0 = 1 x1 ...

  5. 【leetcode】剑指 Offer 16. 数值的整数次方(shu-zhi-de-zheng-shu-ci-fang-lcof)(快速幂)[中等]

    链接 https://leetcode-cn.com/problems/shu-zhi-de-zheng-shu-ci-fang-lcof/ 耗时 解题:6 min 题解:6 min 题意 实现 po ...

  6. Leetcode50.Pow(x, n)剑指 Offer 16. 数值的整数次方--递归快速幂

    class Solution {public:double myPow(double x, int n) {if(n==0) return 1;//考虑到负数右移永远是负数,if(n==-1) ret ...

  7. 剑指Offer #12 数值的整数次方(快速幂)

    题目来源:牛客网-剑指Offer专题 题目地址:数值的整数次方 题目描述 给定一个double类型的浮点数base和int类型的整数exponent.求base的exponent次方. 保证base和 ...

  8. 《剑指offer》数值的整数次方

    题目:给定一个double类型的浮点数base和int类型的整数exponent.求base的exponent次方. 分析:熟悉java中Math的话,直接调用即可,深刻说明在常规编程中熟悉java核 ...

  9. 《剑指Offer》 数值的整数次方

    题目描述: 给定一个double类型的浮点数base和int类型的整数exponent.求base的exponent次方. 思路: 直接调用pow函数 代码: class Solution { pub ...

最新文章

  1. ADMT3.2域迁移之Server2003至Server2012系列(八)生成密钥文件及安装密码迁移工具...
  2. 【Android View绘制之旅】Draw过程
  3. boost::system::error_category相关的测试程序
  4. Tempter of the Bone(HDU1010)
  5. python3异常_python3 异常处理
  6. 需求蔓延,常见但不正常,教你如何破
  7. 30 岁后,哪些职业瓶颈阻碍了你的成长?
  8. qt可以导入3d吗_3D全息投影技术可以用在教育行业吗?
  9. 在WPF中开启摄像头扫描二维码(Media+Zxing)
  10. Linux 安装JDK详细步骤
  11. 便携式CAN分析仪、CAN接口卡、USBCAN 如何安装驱动?
  12. 简易计算机绘图,cad绘图简易入门教程_CAD教程
  13. 迅雷iOS端安装 - iPhone安装手机迅雷
  14. [日更-2019.4.20、21] cm-14.1 Android系统启动过程分析(二)-Zygote进程启动过程
  15. 编程差的程序员,90%都是吃了数学的亏!骨灰级开发:方法不对,努力也白费...
  16. 中e管家理财小方法让闲钱变成活钱
  17. 大数据——DBT:数据治理、血缘关系DBT的安装及测试(基础使用篇)
  18. 垃圾小白羊leetcode刷题记录1
  19. 建筑CAD基础设计【3】
  20. Java爬爬之网页去重和代理ip

热门文章

  1. hadoop错误:Does not contain a valid host:port authority
  2. linux 修改普通用户的 max user process
  3. 构建和实现单点登录解决方案
  4. 【SPOJ5971】LCMSUM
  5. 衔接UI线程和管理后台工作线程的类(多线程、异步调用)[转]
  6. PJblog跨站漏洞利用及修补
  7. 【JavaFx】eclipse搭建JavaFx开发环境
  8. 【jQuery笔记Part2】05-jQuery自定义动画
  9. 网络渗透测试(2)——使用nmap扫描微信服务器
  10. 软件工程专插本_2021年广东专插本8所学校招生专业(拟),华师停招专插本?...