题目:给定一个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;
}
转载请注明原文地址: https://ju.6miu.com/read-21308.html