leetcode相关C++算法解答: https://github.com/Nereus-Minos/C_plus_plus-leetcode
题目;
实现 pow(x, n) ,即计算 x 的 n 次幂函数。
示例 1:
输入: 2.00000, 10
输出: 1024.00000
示例 2:
输入: 2.10000, 3
输出: 9.26100
示例 3:
输入: 2.00000, -2
输出: 0.25000
解释: 2-2 = 1/22 = 1/4 = 0.25
说明:
-100.0 < x < 100.0
n 是 32 位有符号整数,其数值范围是 [−231, 231 − 1] 。
思路:
使用”每次将乘数提高一个档次“的思想优化代码:
if(i-count > 0)
{
temp2 *= temp1;
count += 1;
}
else{
temp2 = temp1;
count = 1;
}
x *= temp2;
i -= count;
代码:
class Solution {
public:
double myPow(double x, int n) {
double temp1=x, temp2 = x;
int count = 1;
if(0 == n)
return 1.0;
if(0 == x)
return 0.0;
if(n > 0)
{
for(int i = n-1; i>0; )
{
if(i-count > 0)
{
temp2 *= temp1;
count += 1;
}
else{
temp2 = temp1;
count = 1;
}
x *= temp2;
i -= count;
}
return x;
}
else
{
for(int i = -n-1; i>0;)
{
if(i-count > 0)
{
temp2 *= temp1;
count += 1;
}
else{
temp2 = temp1;
count = 1;
}
x *= temp2;
i -= count;
}
return 1/x;
}
}
};
这是一个关于C++实现指数运算的博客,详细解释了如何计算x的n次幂。通过示例1到3展示了不同输入下的结果,包括正数、负数次幂的情况。思路部分提到了利用每次将乘数提高一个档次来优化代码,提供了算法的实现代码。
7623

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



