您的位置:首页 > Web前端

剑指Offer-11.数值的整数次方

2017-03-10 14:42 363 查看
题目:给定一个double类型的浮点数base和int类型的整数exponent。求base的exponent次方。同时不需要考虑大数问题。

自以为简单的解法:

double Power(double base, int exponent)
{
double result = 1.0;
for(int i = 1; i < exponent; ++i)
result *= base;
return result;
}


思考:如果输入的指数是0和负整数,怎么办?上面的解决办法考虑了指数是正整数的情况。

正确解法:

double Power(double base, int exponent) {
int n = abs(exponent);
if (n == 0) return 1.0;
if (n == 1) return base;

double res = Power(base, n >> 1);
res *= res;
if (n & 1 == 1)
res *= base;
return exponent < 0 ? 1 / res : res;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: