题目描述

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

思路

首先要把所有的情况都考虑在内,比如基数和指数为0的情况,指数为负数的情况。
然后说一下一种比较优的思路,比如一个数的32次方,它与这个数16次方的平方相等,依次类推,求一个数的32次方只需做5次乘方,先求平方,平方的基础上求四次方,在四次方基础上求八次方,在八次方基础上求十六次方,在十六次方基础上求三十二次方。
可以总结为公式: an = a(n/2)*a(n/2) n为偶数
an = a(n-1/2)*a(n-1/2)*a n为奇数

而n/2使用右移运算符

代码

public double Power(double base, int exponent) {if(base == 0 ){return 0.0;}double res =1.0;double odd = base;int n = exponent;if(exponent<0){n=-exponent;}while(n != 0){if((n & 1) == 1){res *= odd; //奇数}odd *= base;  //指数为偶数,n >>= 1;}return exponent>0 ? res:(1/res);}

需要注意的一点,n & 1是判断n奇偶,等于0为偶数,等于1为奇数,上面最后一个循环的代码实现了上面的公式。

每天一道剑指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. double取整数部分_剑指offer_16_数值的整数次方

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

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

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

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

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

  6. 剑指offer 数值的整次方

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

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

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

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

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

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

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

  10. 一道剑指offer经典面试题引发的思考

    大家在拿到一道算法题的时候,都会思考些什么呢? 大家有没有想过,当有一位面试官追问你,这道题有没有什么问题,或者有没有什么更好的方法,你们的内心是怎样的呢? 可能你会瞪大了眼,一些盲目自信的同学可能会 ...

最新文章

  1. python获取文件的大小_python获取文件大小
  2. pdf2htmlex linux 编译,如何安装编译pdf2htmlex实现pdf到html的格式转换功能
  3. NtQueryInformationProcess用法
  4. scrapy爬虫储存到mysql_详解Python之Scrapy爬虫教程NBA球员数据存放到Mysql数据库
  5. 小公司如何提高效率?
  6. 11.向量vector.rs
  7. JavaScript 音频处理库 pico.js
  8. 软化边硬化边_夏天多给小朋友吃它,蛋白质是牛肉的3倍,老人吃还能软化血管...
  9. 快手上也可以看电竞赛事了:S9直播观看人数惊人!
  10. mysql数控不小心被删_mysql 数据库信息不小心被删除了, 请问能恢复么
  11. 封装自己的DB类(PHP)
  12. neatupload 控件上传大文件
  13. 畅销书排行榜html作业,制作畅销书排行榜.html
  14. iOS集成OpenCV,并实现图片马赛克
  15. 基于Java的资产管理系统的设计与实现
  16. Linux常用命令大全(非常全!!!)
  17. 《英语语法新思维初级教程》学习笔记(八)一般时态
  18. 最新狂雨小说CmsV1.5.2漂亮的小说网站源码
  19. 网站建设的方案和流程介绍
  20. 哪些方法可以用来提高微信小程序的应用速度?

热门文章

  1. 让OSX terminal更出彩
  2. 贝店与谷歌、阿里巴巴同台亮相电博会,获市领导点赞
  3. convert py to pyd
  4. leetcode Candy
  5. 读完了csapp(中文名:深入理解计算机系统)
  6. 探寻安全管理平台(SOC)项目的关键成功因素(4)
  7. 进一步理解VC中的句柄
  8. 6. JavaScript String 对象
  9. 13. Window blur() 方法
  10. sping 总结(03)springmvc