12 求数值的整数次方
1 //题目:给定一个double类型的浮点数base和int类型的整数exponent。求base的exponent次方。 2 //分情况考虑: 3 //第一种情况:底数是0,且指数是负数; 4 //第二种情况:指数小于0; 5 class Solution 6 { 7 public: 8 bool g_InvalidInput = false; 9 double Power(double base, int exponent) 10 { 11 //第一种情况: 12 if (Equal(base, 0.0) && exponent < 0) 13 { 14 g_InvalidInput = true; 15 return 0.0; 16 } 17 //第二种情况:考虑指数问题,指数小于0,就要取绝对值 18 unsigned int absExponent = (unsigned int ) exponent; 19 if (exponent < 0) 20 { 21 absExponent = (unsigned int)(-exponent); 22 } 23 double result = PowerWithExponent(base, absExponent); 24 if(exponent < 0) 25 { 26 result = 1.0 /result; 27 } 28 return result; 29 } 30 private: 31 bool Equal(double num1, double num2) 32 { 33 if(num1 - num2 > -0.000001 && num1-num2 <0.000001) 34 { 35 return true; 36 } 37 return false; 38 } 39 double PowerWithExponent(double base, unsigned int num) 40 { 41 if (num == 0) 42 { 43 return 1; 44 } 45 if (num == 1) 46 { 47 return base; 48 } 49 //***重点理解***由于要递归,故要定义返回值result,终止条件为num == 1 50 double result = PowerWithExponent(base, num>>1); 51 result *= result; 52 if (num & 0x1 == 1) 53 { 54 result *= base; 55 } 56 return result; 57 } 58 };
在代码的世界尽情的翱翔吧!