加入 Gitee
与超过 1200万 开发者一起发现、参与优秀开源项目,私有仓库也完全免费 :)
免费加入
文件
克隆/下载
快速幂的递归和非递归.cpp 642 Bytes
一键复制 编辑 原始数据 按行查看 历史
YXWang 提交于 2021-09-17 15:26 . Update
// 递归快速幂:
int pow(int a, int b) {
if(b == 0)
return 1;
else if(b == 1)
return a;
else {
int x = pow(a, b/2);
if(b % 2 == 1)
return x * x * a;
else
return x * x;
}
}
// 非递归快速幂: 把幂次转换为二进制,例如求a11,把11转换为二进制1011,即可以把a11理解为a8×a2×a1
long long pow(long long a, long long b) {
long long sum = 1;
int rest = b;
int squ = a;
while (rest != 0) {
int remainder = rest % 2;
rest = rest / 2;
if (remainder) sum = sum * squ;
squ = squ * squ;
}
return sum;
}
马建仓 AI 助手
尝试更多
代码解读
代码找茬
代码优化