题目11 数值的整数次方
/
// 1. 题目11 数值的整数次方
// 1.1 没有考虑负数和0的情况!!!! double Power(double dBase, int iExponent) {double dRes = 1.0;for (int i = 0; i < iExponent; i++){dRes *= dBase;}return dRes; }// 判断两个double是否相等 bool Equal(double lhs, double rhs) {if ((lhs - rhs > -0.0000001) && (lhs - rhs < 0.0000001)){return true;}return false; }double PowerWithUnsignedExponent(double dBase, unsigned int uiExponent) {double dResult = 1.0;for (unsigned int i = 1; i <= uiExponent; i++){dResult *= dBase;}return dResult; }// 1.2 全面但不够高效的算法 double Power_1(double dBase, int iExponent) {double dResult = 0.0;if (Equal(dBase, 0.0) && iExponent < 0){return dResult;}unsigned int absExponent = (unsigned int)iExponent;if (iExponent < 0){absExponent = (unsigned int)(-iExponent);}dResult = PowerWithUnsignedExponent(dBase, absExponent);if (iExponent < 0){dResult = 1.0 / dResult;}return dResult; }// 1.3 全面且高效的解法 // eg 如果输入iExponent = 32, PowerWithUnsignedExponent中需要循环31次 // 另一种解法: (a)32 --> ((a)16)2 --> (((a)8)2)2 -> ... --> (((((a)2)2)2)2)2 --> 运行5次double NewPowerWithUnsignedExponent(double dBase, unsigned int uiExponent) {if (0 == uiExponent){return 1.0;}else if (1 == uiExponent){return dBase;}double dResult = NewPowerWithUnsignedExponent(dBase, uiExponent >> 1);dResult *= dResult;// 如果是基数if (uiExponent & 0x01){dResult *= dBase;}return dResult; }double Power_2(double dBase, int iExponent) {double dResult = 0.0;if (Equal(dBase, 0.0) && iExponent < 0){return dResult;}unsigned int absExponent = (unsigned int)iExponent;if (iExponent < 0){absExponent = (unsigned int)(-iExponent);}dResult = NewPowerWithUnsignedExponent(dBase, absExponent);if (iExponent < 0){dResult = 1.0 / dResult;}return dResult; }void PowerTestFunc() {cout << "\n\n --------------- PowerTestFunc Start -------------->" << endl;int aiArray[] = {-3, -2, -1, 0, 1, 2, 3, 4, 5, 6};int iLen = sizeof(aiArray) / sizeof(int);double dBase = 5;cout << "方法一: ==========================>>" << endl;for (int i = 0; i < iLen; i++){printf("[%lf] 的 %d 次方: %lf\n", dBase, aiArray[i], Power(dBase, aiArray[i]));}cout << "方法二: ==========================>>" << endl;for (int i = 0; i < iLen; i++){printf("[%lf] 的 %d 次方: %lf\n", dBase, aiArray[i], Power_1(dBase, aiArray[i]));}cout << "方法三: ==========================>>" << endl;for (int i = 0; i < iLen; i++){printf("[%lf] 的 %d 次方: %lf\n", dBase, aiArray[i], Power_2(dBase, aiArray[i]));}cout << "\n\n --------------- PowerTestFunc End -------------->" << endl;}
转载于:https://www.cnblogs.com/yzdai/p/11258684.html
题目11 数值的整数次方相关推荐
- 【剑指offer-Java版】11数值的整数次方
不用库,实现pow()运算 很简单的题目,但是涉及到很多细节 比如 1) 结果非法或者出错的时候如何通知调用者: 可以采用返回特定值的方法-但是此处pow运算既可以返回正数 0 或者负数,所以此思路比 ...
- 剑指offer:面试题16. 数值的整数次方
题目:数值的整数次方 实现函数double Power(double base, int exponent),求base的exponent次方.不得使用库函数,同时不需要考虑大数问题. 示例 1: 输 ...
- 算法:数值的整数次方
/** *题目:数值的整数次方 *描述:给定一个double类型的浮点数base和int类型的整数exponent.求base的exponent次方. *解决方案: 求次方得考虑exponen ...
- 11:数值的整数次方
/*** 面试题11:数值的整数次方* 给定一个double类型的浮点数base和int类型的整数exponent.求base的exponent次方.*/ public class _11_power ...
- 剑指offer——面试题11:数值的整数次方
剑指offer--面试题11:数值的整数次方 Solution1:基本算法 累乘,时间复杂度为O(n) 要考虑全部情况:指数 < 0, == 0 和 > 0. 注意在 if-else if ...
- 《剑指offer》-- 数组中的逆序对、最小的K个数、从1到n整数中1出现的次数、正则表达式匹配、数值的整数次方
一.数组中的逆序对: 1.题目: 数组中的两个数字,如果前面一个数字大于后面的数字,则这两个数字组成一个逆序对.输入一个数组,求出这个数组中的逆序对的总数P.并将P对1000000007取模的结果输出 ...
- 【剑指offer - C++/Java】12、数值的整数次方
在线题目链接:数值的整数次方 文章目录 1 题目描述 2 题目分析 2.1 方法1 循环 2.11 Java代码 2.12 C++代码 2.2 方法2 递归 2.21 Java代码 2.22 C++代 ...
- php实现数值的整数次方
php实现数值的整数次方 一.总结 没有考虑到指数为负数的情况 二.php实现数值的整数次方 题目描述: 给定一个double类型的浮点数base和int类型的整数exponent.求base的exp ...
- double取整数部分_剑指offer_16_数值的整数次方
//面试题16.数值的整数次方 //题目:实现函数double Power(double base,int exponent),求base的exponent次方. //不得使用库函数,同时需要考虑大数 ...
最新文章
- OCtaveResNet 测试
- Greenplum,HAWQ interval parser带来的问题 - TPCH 测试注意啦
- java IO(输入输出) 字节流
- Caffe2:添加CUDA路径
- BZOJ 3112 Zjoi2013 防守战线 单纯形
- 基础知识回顾——异常处理
- 中科大博士写外挂被抓,非法牟利300多万!
- 使用python开发json、csv数据格式转换工具
- windows下JDK环境配置与Android SDK环境配置
- suse 查看java版本_如何查看当前Linux的版本
- SPSS基础操作详解---系统环境设置篇
- 如何在桌面上显示我的计算机,Win10如何将我的电脑(此电脑)显示到桌面上?
- 2019 年第 31 周 DApp 影响力排行榜 | TokenInsight
- 力扣LeetBook<链表>学习笔记
- 2001-2019年300多个城市进口额、出口额、进出口额汇总
- #企业要求程序员统一电脑桌面,网友:桌面壁纸都不配拥有?
- 【软件测试技术】黑盒测试步骤设计详解
- 解决笔记本一插电源就死机蓝屏,drive_power_state_failure报错的问题
- 视觉SLAM十四讲:第3讲 三维空间刚体运动
- PHP利用CURL_MULTI实现多线程爆破
热门文章
- noip2009 靶形数独
- 演练3-1:留言管理系统的制作
- Entity Framework中IQueryable, IEnumerable, IList的区别
- Burrard 大桥
- 行人检测(Pedestrian Detection)资源
- php5.5.25升级到php5.6.30,加载yaf.so报错解决方法!
- npm package.json那些事
- GitHub 上值得关注的 iOS 开源项目
- Linux中强制结束一个进程的终极方法
- ASP.Net TextBox控件只允许输入数字