C语言求幂的三种方法 | 您所在的位置:网站首页 › c加加中次幂的表示方法 › C语言求幂的三种方法 |
用三种方法求幂值
一. 暴力递归
直接对x乘y次 int result(int x,int y) { int num=1; for (int i=1; i 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方面的文章,希望大家多多支持。 |
CopyRight 2018-2019 实验室设备网 版权所有 |