首页 > 编程知识 正文

c语言如何求幂,c语言怎么求幂

时间:2023-05-04 23:16:01 阅读:225555 作者:2940

用三种方法求幂值 一. 暴力递归

直接对x乘y次

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

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

二. 快速幂

主要利用递归,它的思想类似于分治,把大问题分割为小问题,再将小问题的结果合计为大问题的解
t 4 = t 2 + t 2 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 = 2 2 + 2 1 + 2 0 其 二 进 制 形 式 为 111 , 且 每 一 位 都 等 于 前 一 位 的 平 方 7=2^{2}+2^{1}+2^{0} 其二进制形式为111,且每一位都等于前一位的平方 7=22+21+20其二进制形式为111,且每一位都等于前一位的平方

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方面的文章,希望大家多多支持。

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。