面试题 11:数值的整数次方
来源:互联网 发布:php都开发过什么软件 编辑:程序博客网 时间:2024/06/03 19:48
一. 题目
实现函数double Power(double base,int exponent),求base 的exponent 次方.不得使用库函数,同时不需要考虑大数问题.
代码请到我的代码库中下载 Point2Offer
二. 代码
package ween_2;/**难度系数:*** * 剑指offer: 数值的整数次方 * 方法:考虑指数为负和底数为0 * 测试用例:功能测试(指数为正,指数为负,指数为0) * 特殊输入测试(底数为0) * @author dingding * Date:2017-6-22 17:00 * Declaration: All Rights Reserved! */public class No11 { private static boolean invalidInput = false; public static void main(String[] args) { test1(); test2(); test3(); test4(); } //计算 private static double power(double base,int exponent){ invalidInput = false; if (equal(base,0.0) && exponent<0) { invalidInput = true; return 0.0; } int absExponent = exponent; if (exponent<0) { absExponent = -exponent; } double result = powerWithAbsExponent(base,absExponent); if (exponent<0) { result = 1.0/result; } return result; } //计算次方(使用递归方法,效率更高) private static double powerWithAbsExponent(double base, int absExponent) { if (absExponent==0) { return 1; } if (absExponent==1) { return base; } double result = powerWithAbsExponent(base, absExponent>>1); result *=result; if ((absExponent&1) == 1) { result*=base; }// for (int i=1;i<=absExponent;i++){// result*=base;// } return result; } //判断是否等于0 private static boolean equal(double a, double b) { if ((a-b>-0.0000001)&&(a-b<0.0000001)) { return true; }else { return false; } } private static void test1() { double result = power(2, 4); System.out.println(result); } private static void test2() { double result = power(2, -3); System.out.println(result); } private static void test3() { double result = power(0, -1); System.out.println(result); } private static void test4() { double result = power(-2, 4); System.out.println(result); }}
有不妥当之处,麻烦告知:D
阅读全文
0 0
- 面试题11:数值的整数次方
- 面试题11 数值的整数次方
- 面试题11:数值的整数次方
- 面试题11-数值的整数次方
- 面试题11数值的整数次方
- 面试题11:数值的整数次方
- 面试题11:数值的整数次方
- 面试题11:数值的整数次方
- 面试题11:数值的整数次方
- 面试题11:数值的整数次方
- 面试题11:数值的整数次方
- 面试题11:数值的整数次方
- 【面试题11】数值的整数次方
- 面试题11:数值的整数次方
- 面试题11:数值的整数次方
- 【面试题11】数值的整数次方
- 面试题11:数值的整数次方
- 面试题11数值的整数次方
- MATLAB 根据条件修改TXT文本内容
- 给初学者的RxJava2.0教程(一)
- android加载so问题
- C# List根据某一字段排序 将字段相同的排序到一起
- ios在同一个控制器中 动态显示和隐藏状态栏
- 面试题 11:数值的整数次方
- “玲珑杯”线上赛 Round #15 河南专场 D -- 咸鱼商店
- Navicat 无法连接到 mysql 解决办法
- 通过AppAuth iOS理解Google OIDC服务
- 链表头使用指针的问题
- 解决could not create leading directories of '/usr/local/Homebrew/Library/Taps/caskroom/homebrew-cask':
- Xcode连线Touch触发事件
- Python 日期与时间
- 第三章 tensorflow入门