C语言求幂的三种方法

本文介绍了C语言中实现幂运算的三种方法:暴力递归、快速幂和二进制求幂。暴力递归简单但效率低,快速幂通过指数二分降低时间复杂度,二进制求幂利用指数的二进制形式进一步优化计算。通过这些方法,可以显著提升大数幂运算的速度。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

用三种方法求幂值

一. 暴力递归

直接对x乘y次

int result(int x,int y)
{
    int num=1;
    for (int i=1; i<=y; i++) {
        num*=x;
    }
    return num;
}

这种方法有手就行,但是运行时间往往过长

二. 快速幂

主要利用递归,它的思想类似于分治,把大问题分割为小问题,再将小问题的结果合计为大问题的解
t4=t2+t2 t^{4}=t^{2}+t^{2} t4=t2+t2
所以我们可以对幂指数进行不断的二分,达到降低时间复杂度的效果

int result(int x,int y)
{
    if(y==0)return 1;
    if(y==1)return x;
    int t=result(x, y/2)*result(x, y/2);
    if(y%2==0)return t;
    else return t*x;
}

当幂指数y为奇数时,还要乘一次自身

三 .二进制求幂

假设指数为7,可写为
7=22+21+20其二进制形式为111,且每一位都等于前一位的平方 7=2^{2}+2^{1}+2^{0} 其二进制形式为111,且每一位都等于前一位的平方 7=22+21+20111

long long qpow(int base,int p){
    long long ans=1,tmp=base;//从底数开始乘,不停自乘
    while(p!=0){//指数不是0
        if(p&1){
            ans=(ans*tmp);
        }
        tmp=(tmp*tmp);//自乘
        p=p>>1;//访问下一位
    }
    return ans;
}

再此方法下,时间复杂度最低

希望大家三连关注,嘻嘻,我会继续更新c语言和python方面的文章,希望大家多多支持。

评论 13
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值