剑指offer-求a^n
程序员文章站
2024-03-15 15:53:47
...
法一 递归法
需要考虑base为0的情况,以及exponent为负数的情况。
a^n=a*a^(n/2)*a^(n/2) 当n为奇数时
a^n=a^(n/2)*a^(n/2) 当n为偶数时
class Solution {
public:
double Power(double base, int exponent) {
if(base==0)
return 0;
else if(exponent==0)
return 1;
else if(exponent==1)
return base;
else if(exponent>1)
{
double res=Power(base,exponent>>1);
res*=res;
if(exponent&0x1)
return res*base;
else
return res;
}
else
{
return 1.0/Power(base,-exponent);
}
}
};
法二 快速幂法
例如求,先把75写作二进制形式:1001011
即
那么我们可以先求出。再根据二进制相应位置是否为1选择性地进行乘法。
class Solution {
public:
double powercore(double base,int exponent)
{
double res=1;
while(exponent>0)
{
if(exponent&1)
res*=base;
base=base*base;
exponent>>=1;
}
return res;
}
double Power(double base, int exponent) {
if(base==0)
return 0;
else if(exponent==0)
return 1;
else if(exponent==1)
return base;
else if(exponent>1)
{
return powercore(base,exponent);
}
else
return 1/Power(base,-exponent);
}
};
上一篇: 123
下一篇: PAT B 1007 素数对猜想
推荐阅读
-
剑指offer-求a^n
-
剑指offer:求1+2+3+...+n
-
剑指offer 面试题64:求1+2+3+...+n c++
-
剑指offer之求二叉树中两个节点的最低共同父节点
-
剑指 Offer 53 - II. 0~n-1中缺失的数字 python
-
剑指 Offer 53 - II. 0~n-1中缺失的数字
-
[leetCode]剑指 Offer 53 - II. 0~n-1中缺失的数字
-
[LeetCode]剑指 Offer 53 - II. 0~n-1中缺失的数字
-
Leetcode 剑指 Offer 53 - II. 0~n-1中缺失的数字
-
剑指offer:Python 整数中1出现的次数(从1到n整数中1出现的次数)图解 绝对让你看懂!