首页 > 其他 > 详细

数值的整数次方

时间:2014-04-14 20:40:17      阅读:603      评论:0      收藏:0      [点我收藏+]

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

要点:定义域解析、错误处理、效率

代码:

#include<iostream>
using namespace std;
bool g_InvalidInput=false;
double powerWithUnsignedExponent(double base,unsigned int exponent);
bool equal(double num1,double num2)
{
if((num1-num2>-0.0000001)&&(num1-num2<0.0000001)) return true;
else return false;
}
double power(double base,int exponent)
{
g_InvalidInput=false;
if(equal(base,0.0)&&exponent<0)
{
g_InvalidInput=true;
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;
}
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;
}
int main()
{
double base;
int exponent;
cout<<"please enter base:";
cin>>base;
cout<<"please enter exponent:";
cin>>exponent;
cout<<base<<"^"<<exponent<<"="<<power(base,exponent)<<endl;
return 0;
}

reference:剑指Offer(何海涛著)

数值的整数次方,布布扣,bubuko.com

数值的整数次方

原文:http://blog.csdn.net/pyz_tech/article/details/23663201

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!