给定一个double类型的浮点数base和int类型的整数exponent。求base的exponent次方。
超时代码
class Solution { public: double Power(double base, int exponent){ if (exponent == 0)return base; double k = 1; while (exponent--){ k *= base; } return k; }//没有考虑到指数可能是负数 }; AC的代码 class Solution { public: double UnsignedPower(double base, unsigned int exponent){ if (exponent == 0)return 1.0; if (exponent == 1)return base; double result = UnsignedPower(base, exponent >> 1); result *= result; if (exponent & 1) result *= base; return result; } double Power(double base, int exponent) { int flag = 1; if (base-0.0>-0.0000001 && base-0.0<0.0000001)return 0.0; if (exponent < 0){ flag = 0; exponent =(-exponent); } double result = UnsignedPower(base, exponent); if (flag == 0)result = 1.0 / result; return result; }//注意考虑到指数为负数,以及位运算的运用可以提高效率 };