码迷,mamicode.com
首页 > 编程语言 > 详细

普通算法(幂运算)

时间:2016-09-14 16:32:38      阅读:152      评论:0      收藏:0      [点我收藏+]

标签:

 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^2
16     }else                             //如果n是奇数
17     return pow1 (a * a,n / 2) * a;           //例 a^5 = a^2 * a^2 * a
18 }
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 的相乘减少了时间复杂度

普通算法(幂运算)

标签:

原文地址:http://www.cnblogs.com/Ponytai1/p/5872492.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!