1 #include "stdafx.h" 2 #include <iostream> 3 #include <exception> 4 #include <stack> 5 /* 6 题目:实现函数 doublePower(double base,int exponenet), 7 求base的exponenet次方,不得使用库函数,同时不需要考虑大数问题 8 */ 9 using namespace std; 10 bool g_InvalidInput = false; 11 bool equal(double num1,double num2) 12 { 13 if((num1 - num2 >-0.0000001)&&(num1-num2<0.0000001)) 14 { 15 return true; 16 } 17 else return false; 18 } 19 double PowerWithUnsignedExponenet(double base,unsigned int exponent) 20 { 21 double result = 1.0; 22 for(unsigned int i = 1;i<=exponent;++i) 23 { 24 result*= base; 25 } 26 return result; 27 } 28 double Power(double base,int exponent) 29 { 30 g_InvalidInput = false; 31 if(equal(base,0.0)&&exponent<0) 32 { 33 g_InvalidInput = true; 34 return 0.0; 35 } 36 37 unsigned int absExponent = (unsigned int) (exponent); 38 if(exponent<0) 39 absExponent = (unsigned int)(-exponent); 40 double result = PowerWithUnsignedExponenet(base,absExponent); 41 if(exponent <0) 42 result = 1.0/result; 43 return result; 44 } 45 46 int _tmain(int argc, _TCHAR* argv[]) 47 { 48 cout<<Power(2,3)<<endl; 49 return 0 ; 50 }