题目:给定一个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;
}
本文探讨了如何实现一个双精度浮点数的幂运算,包括处理正指数、负指数和零指数的情况,并提供了一种高效的递归算法来减少乘法操作的数量。
365

被折叠的 条评论
为什么被折叠?



