数值的整数次方

代码实现:

[java] view plaincopyprint?

public class Test11 {

/**

* 实现函数double Power(double base, int exponent),求base的exponent次方。

* 不得使用库函数,同时不需要考虑大数问题。

*

* @param base 指次

* @param exponent 幂

* @return 结果

*/

public static double power(double base, int exponent) {

// 指数和底数不能同时为0

if (base == 0 && exponent == 0) {

throw new RuntimeException("invalid input. base and exponent both are zero");

}

// 指数为0就返回1

if (exponent == 0) {

return 1;

}

// 求指数的绝对值

long exp = exponent;

if (exponent < 0) {

exp = -exp;

}

// 求幂次方

double result = powerWithUnsignedExponent(base, exp);

// 指数是负数,要进行求倒数

if (exponent < 0) {

result = 1 / result;

}

// 返回结果

return result;

}

/**

* 求一个数的正整数次幂,不考虑溢出

*

* @param base 指次

* @param exponent 幂

* @return 结果

*/

public static double powerWithUnsignedExponent(double base, long exponent) {

// 如果指数为0,返回1

if (exponent == 0) {

return 1;

}

// 指数为1,返回底数

if (exponent == 1) {

return base;

}

// 递归求一半的值

double result = powerWithUnsignedExponent(base, exponent >> 2);

// 求最终的值,如果是奇数就还要剩以一次底数

result *= result;

if (exponent % 2 != 0) {

result *= base;

}

// 返回结果

return result;

}

public static void main(String[] args) {

System.out.println(0.0000000000000000000000001111 == 0);

System.out.println(0.0000000000000000000000000000 == 0);

System.out.println(power(2, -4));

System.out.println(power(2, 4));

System.out.println(power(2, 0));

System.out.println(power(0.00000000000000000000000000001, -1));

System.out.println(power(0.00000000000000000000000000001, 1));

System.out.println(power(0.00000000000000000000000000001, 0));

System.out.println(power(0.00000000000000000000000000000, 0));

}

运行结果:

java中整数的整数次方_数值的整数次方 - 剑指 Offer 学习心得_教程_Java开发社区...相关推荐

  1. 【leetcode】 剑指 Offer学习计划(java版本含注释)(上)

    目录 前言 第一天(栈与队列) 剑指 Offer 09. 用两个栈实现队列(简单) 剑指 Offer 30. 包含min函数的栈(简单) 第二天(链表) 剑指 Offer 06. 从尾到头打印链表(简 ...

  2. 【剑指Offer学习】【面试题66:矩阵中的路径】

    [剑指Offer学习][面试题66:矩阵中的路径] 题目:请设计一个函数,用来推断在一个矩阵中是否存在一条包括某字符串全部字符的路径.路径能够从矩阵中随意一格開始.每一步能够在矩阵中间向左.右.上.下 ...

  3. 剑指offer最新版_剑指Offer——Java版本(持续更新)

    0 前言 邻近校招,算法要命!!! 本文为研究剑指Offer过程中的笔记,整理出主要思路以及Java版本题解,以便记忆和复习. 参考整理来自<剑指Offer 第二版>. 特别注意,对每道题 ...

  4. 剑指offer python实现_剑指offer系列python实现 日更(三)

    今天来讲讲斐波那契数列和它的孩子们~先讲个冷笑话:今天来一盘斐波那契炒饭,它等于昨天的炒饭加上前天的炒饭 ‍ 7.斐波那契数列 大家都知道斐波那契数列,现在要求输入一个整数n,请你输出斐波那契数列的第 ...

  5. java 栈和队列实现迷宫代码_LeetCode每日一题--剑指 Offer 09. 用两个栈实现队列(Java)

    DailyChallenge 剑指 Offer 09. 用两个栈实现队列 Easy20200630 Description 用两个栈实现一个队列.队列的声明如下,请实现它的两个函数 appendTai ...

  6. 谷粒商城高级篇资料_一文搞定剑指offer面试题【分文别类篇】

    点击上方"蓝字",关注了解更多 数组: 面试题3:数组中重复的数字 面试题4:二维数组中的查找 面试题21:调整数组顺序使奇数位于偶数前面 面试题39:数组中出现次数超过一半的数字 ...

  7. 剑指offer最新版_剑指offer第二版速查表

    5.替换空格:python直接替换 6.从尾到头打印链表: 借助栈或直接利用系统调用栈 // 创建链表(设置next节点时就会创建下一个节点), 打印链表(最后打印nil) xxx8.二叉树的下一个节 ...

  8. 表示数值的字符串——《剑指offer》

    题目描述 请实现一个函数用来判断字符串是否表示数值(包括整数和小数). 数值(按顺序)可以分成以下几个部分: 若干空格 一个 小数 或者 整数 (可选)一个 'e' 或 'E' ,后面跟着一个 整数 ...

  9. shiro java配置,InI 配置 - 跟我学 Apache Shiro_教程_Java开发社区

    INI 配置 之前章节我们已经接触过一些 INI 配置规则了,如果大家使用过如 Spring 之类的 IoC/DI 容器的话,Shiro 提供的 INI 配置也是非常类似的,即可以理解为是一个 IoC ...

最新文章

  1. 无法安装到这个磁盘 这台计算机,安装Win7提示无法安装到这个磁盘怎么办
  2. 通过追源码解决:xmlrpc.client设定请求超时时间
  3. C++fast power快速指数的实现(附完整源码)
  4. python语言程序设计实验答案实验八函数_C++程序设计 实验8 实验报告 标准答案...
  5. vue 对象继承_Vue2.0中组件的继承与扩展是什么
  6. 删除Win7通知区域的无效图标
  7. 类似Rainmeter、Conky的安卓插件
  8. python微博评论爬虫_详解用python写网络爬虫-爬取新浪微博评论
  9. Windows安装Android软件,win7系统安装安卓软件WindowsAndroid的方法
  10. 蓝牙相关学习:5.BLE协议属性协议层(ATT)
  11. PS小知识(五)——羽化(图片拼接后去缝、自然过渡渐变)
  12. 关闭微软cortana
  13. 计算机开机后无法网络拨号怎样处理,电脑不能上网了怎么办?教你宽带故障排查方法...
  14. 你了解眼角膜移植术吗?哪些眼疾需要接受角膜移植呢?
  15. java面试看这一篇就够了
  16. C语言学习笔记(15)——结构体程序设计
  17. 使用Android Studio 写骰子游戏
  18. 北大igem生物计算机,北京大学iGEM团队在国际大赛中取得优异成绩
  19. 自动化测试框架: KIF和EarlGrey对比
  20. mysql查询计算机系信息_在学生管理数据库中查询通信系和计算机系的所有教师信息...

热门文章

  1. 作为一个前端,可以如何机智地弄坏一台电脑?
  2. 基于go搭建微服务实践教程 (概览)
  3. fragment中的replace和hide与shou方法的区别
  4. Code片段 : .properties属性文件操作工具类 JSON工具类
  5. OneZero第四周第四次站立会议(2016.4.14)
  6. 用CSS伪元素制作箭头
  7. Windows server 2012 活动目录回收站
  8. Dos命令删除注册表项
  9. 全年月平均工作时间和工资折算办法
  10. 存储过程学习三(创建存储过程实例)