剑指offer面试题11:数值的整数次方

来源:互联网 发布:dota2知乎 编辑:程序博客网 时间:2024/06/01 07:48

题目:实现函数double Power(double base, int exponent),求base的exponent次方。不得使用库函数,同时不需要考虑大数问题。

#include <exception>#include <iostream>using namespace std;bool g_InvalidInput = false;bool equal(double num1, double num2) {  if ((num1 - num2 > -0.0000001) && (num1 - num2 < 0.0000001))    return true;  else    return false;}double powerunsigned(double base, unsigned int exponent) {  if (exponent == 0)    return 1;  if (exponent == 1)    return base;  double result = powerunsigned(base, exponent >> 1);  result *= result;  if ((exponent & 0x1) == 1)    result *= base;  return result;}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 = powerunsigned(base, absExponent);  if (exponent < 0)    result = 1.0 / result;  return result;}int main() {  int n = 0;  double base = 0;  double result = power(base, n);  cout << result << endl;  return 0;}
0 0
原创粉丝点击