剑指offer---数值的整数次方(11)
来源:互联网 发布:剑灵捏脸数据人男 编辑:程序博客网 时间:2024/05/29 18:32
题目:实现函数double Power(double base,int exponent),求base的exponent次方,不得使用库函数,同时不需要考虑大数的问题
#include <iostream>using namespace std;bool g_InvalidInput = true;//判断基数是否等于0;bool equal(double num1,double num2){ if( (num1-num2)>-0.0000001 && (num1-num2) < 0.0000001) { return true; } return false;}//计算base、exponent不为0,且exponent大于0#if 0double PowerWithUnsignedExponent(double base,unsigned int exponent){ double result = 1.0; for(unsigned int i=1;i <= exponent;i++) { result *= base; } return result;}#endif//效率比较高double PowerWithUnsignedExponent(double base,unsigned int exponent){ if(exponent == 0) return 1; if(exponent == 1) return base; double result = PowerWithUnsignedExponent(base,exponent>>1); result *= result; //指数为奇数 if(exponent & 0x1 ==1) result *= base; return result;}double Power(double base,int exponent){ //base=0,并且指数exponent<0,要对0求倒数,会出错。 if(equal(base,0.0) && exponent < 0) { g_InvalidInput = false; return 0.0; } unsigned int absExponent = (unsigned int)exponent; if(exponent < 0) absExponent = (unsigned int)(-exponent); double result = PowerWithUnsignedExponent(base,absExponent); if(exponent < 0) { result = 1.0/result; } return result;}int main(){ double tmp = Power(2,-2); if(g_InvalidInput) { cout<<tmp<<endl; } else { cout<<tmp<<" "<<"输入参数有误"<<endl; } return 0;}
阅读全文
0 0
- 剑指offer-11 数值的整数次方
- 剑指offer 11 - 数值的整数次方
- 剑指Offer-11-数值的整数次方
- 剑指Offer 11 数值的整数次方
- 剑指offer-11:数值的整数次方
- 剑指offer 11 数值的整数次方
- 剑指offer---数值的整数次方(11)
- 剑指Offer之数值的整数次方
- 剑指offer:数值的整数次方
- 【剑指offer】数值的整数次方
- [剑指offer]Q11:数值的整数次方
- 【剑指offer】数值的整数次方
- 剑指Offer之数值的整数次方
- 《剑指offer》数值的整数次方
- 剑指offer--数值的整数次方
- 剑指Offer之 - 数值的整数次方
- 剑指Offer-数值的整数次方
- 剑指offer 数值的整数次方
- 响应式Web设计的9项基本原则
- 必读的android 文章- 收藏集
- java按行读取文件并计算行数
- Mysql之我见六(查询截取分析)
- Coursera—machine learning(Andrew Ng)第八周编程作业
- 剑指offer---数值的整数次方(11)
- Root权限打开wireshark,使用隐藏功能
- 基于热电偶的温度测量系统
- WiFi已攻占世界 芯片原厂、模组方案商盘点
- 一个小程序不知道哪里出问题了,python
- 解决问题:Unable to compile class for JSP
- maven下载jar包速度慢(解决办法)
- 使用gradle的productFlavors实现Android项目多渠道打包
- RequireJS学习