C++|幂运算:简单循环、优化后的递归或循环实现
对于手动幂运算,如求2^10,可以有直接和较简便的方法:
用计算机程序表示也是如此:
1 简单循环
unsigned power(unsigned x, unsigned n)
{
if(n==0)
return 1;
unsigned sum = 1;
for(int i=0; i<n; i++)
sum *= x;
return sum;
}2 优化后的递归实现
unsigned pow(int x, int n)
{
if(n==0)
return 1;
if(n==1)
return x;
else
{
int s = pow(x,n/2);
if((n%2)==0)
return s*s;
else
return s*s*x;
}
}过程图示:
3 优化后的循环实现(结合位运算)
unsigned pow2(int x, int n)
{
int result;
if(n==0)
return 1;
while((n&1)==0)
{
n>>=1;
x *= x;
}
result = x;
n>>=1;
while(n!=0)
{
x *= x;
if((n&1)!=0)
result *=x;
n>>=1;
}
return result;
}过程图标:
-End-
上一篇:位运算详解
相关文章
- Spring Boot中对接Twilio以实现发送验证码和验证短信码
- Spring Boot 3.5:这次更新让你连配置都不用写了,惊不惊喜?
- Spring Boot+Pinot实战:毫秒级实时竞价系统构建
- SpringBoot敏感配置项加密与解密实战
- SpringBoot 注解最全详解,建议收藏!
- Spring Boot 常用注解大全:从入门到进阶
- SpringBoot启动之谜:@SpringBootApplication如何让配置化繁为简
- Springboot集成Kafka原理_spring集成kafka的原理
- Spring Boot中@Data注解的深度解析与实战应用
- 大佬用1000字就把SpringBoot的配置文件讲的明明白白!
