首页 > 代码库 > 普通算法(幂运算)

普通算法(幂运算)

 1 #include <stdio.h> 2 long int pow1(long int a,unsigned int n) 3 { 4     if(n == 0)                5     { 6         return 1; 7      } else 8     if(n == 1)                //可省略 与第17行重复,第17行可处理n==1的情况 9     {10         return a;11     }12     13     if(n % 2 == 0)                //如果n是偶数14     {15         return pow1 (a * a,n / 2);          //例 a^4 = a^2 * a^216     }else                             //如果n是奇数17     return pow1 (a * a,n / 2) * a;           //例 a^5 = a^2 * a^2 * a18 }19 int main ()20 {21     int a = 2;22     unsigned int n = 0;23     long int ret = pow1 (a , n);24     printf("%ld",ret);25     return 0 ;26 }

此算法相比直接进行n -1 次 a 的相乘减少了时间复杂度

普通算法(幂运算)