java中整数的整数次方_数值的整数次方 - 剑指 Offer 学习心得_教程_Java开发社区...
数值的整数次方
代码实现:
[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开发社区...相关推荐
- 【leetcode】 剑指 Offer学习计划(java版本含注释)(上)
目录 前言 第一天(栈与队列) 剑指 Offer 09. 用两个栈实现队列(简单) 剑指 Offer 30. 包含min函数的栈(简单) 第二天(链表) 剑指 Offer 06. 从尾到头打印链表(简 ...
- 【剑指Offer学习】【面试题66:矩阵中的路径】
[剑指Offer学习][面试题66:矩阵中的路径] 题目:请设计一个函数,用来推断在一个矩阵中是否存在一条包括某字符串全部字符的路径.路径能够从矩阵中随意一格開始.每一步能够在矩阵中间向左.右.上.下 ...
- 剑指offer最新版_剑指Offer——Java版本(持续更新)
0 前言 邻近校招,算法要命!!! 本文为研究剑指Offer过程中的笔记,整理出主要思路以及Java版本题解,以便记忆和复习. 参考整理来自<剑指Offer 第二版>. 特别注意,对每道题 ...
- 剑指offer python实现_剑指offer系列python实现 日更(三)
今天来讲讲斐波那契数列和它的孩子们~先讲个冷笑话:今天来一盘斐波那契炒饭,它等于昨天的炒饭加上前天的炒饭 7.斐波那契数列 大家都知道斐波那契数列,现在要求输入一个整数n,请你输出斐波那契数列的第 ...
- java 栈和队列实现迷宫代码_LeetCode每日一题--剑指 Offer 09. 用两个栈实现队列(Java)
DailyChallenge 剑指 Offer 09. 用两个栈实现队列 Easy20200630 Description 用两个栈实现一个队列.队列的声明如下,请实现它的两个函数 appendTai ...
- 谷粒商城高级篇资料_一文搞定剑指offer面试题【分文别类篇】
点击上方"蓝字",关注了解更多 数组: 面试题3:数组中重复的数字 面试题4:二维数组中的查找 面试题21:调整数组顺序使奇数位于偶数前面 面试题39:数组中出现次数超过一半的数字 ...
- 剑指offer最新版_剑指offer第二版速查表
5.替换空格:python直接替换 6.从尾到头打印链表: 借助栈或直接利用系统调用栈 // 创建链表(设置next节点时就会创建下一个节点), 打印链表(最后打印nil) xxx8.二叉树的下一个节 ...
- 表示数值的字符串——《剑指offer》
题目描述 请实现一个函数用来判断字符串是否表示数值(包括整数和小数). 数值(按顺序)可以分成以下几个部分: 若干空格 一个 小数 或者 整数 (可选)一个 'e' 或 'E' ,后面跟着一个 整数 ...
- shiro java配置,InI 配置 - 跟我学 Apache Shiro_教程_Java开发社区
INI 配置 之前章节我们已经接触过一些 INI 配置规则了,如果大家使用过如 Spring 之类的 IoC/DI 容器的话,Shiro 提供的 INI 配置也是非常类似的,即可以理解为是一个 IoC ...
最新文章
- 无法安装到这个磁盘 这台计算机,安装Win7提示无法安装到这个磁盘怎么办
- 通过追源码解决:xmlrpc.client设定请求超时时间
- C++fast power快速指数的实现(附完整源码)
- python语言程序设计实验答案实验八函数_C++程序设计 实验8 实验报告 标准答案...
- vue 对象继承_Vue2.0中组件的继承与扩展是什么
- 删除Win7通知区域的无效图标
- 类似Rainmeter、Conky的安卓插件
- python微博评论爬虫_详解用python写网络爬虫-爬取新浪微博评论
- Windows安装Android软件,win7系统安装安卓软件WindowsAndroid的方法
- 蓝牙相关学习:5.BLE协议属性协议层(ATT)
- PS小知识(五)——羽化(图片拼接后去缝、自然过渡渐变)
- 关闭微软cortana
- 计算机开机后无法网络拨号怎样处理,电脑不能上网了怎么办?教你宽带故障排查方法...
- 你了解眼角膜移植术吗?哪些眼疾需要接受角膜移植呢?
- java面试看这一篇就够了
- C语言学习笔记(15)——结构体程序设计
- 使用Android Studio 写骰子游戏
- 北大igem生物计算机,北京大学iGEM团队在国际大赛中取得优异成绩
- 自动化测试框架: KIF和EarlGrey对比
- mysql查询计算机系信息_在学生管理数据库中查询通信系和计算机系的所有教师信息...