码迷,mamicode.com
首页 > 其他好文 > 详细

递归函数

时间:2017-07-03 14:04:02      阅读:118      评论:0      收藏:0      [点我收藏+]

标签:调用   argv   nbsp   printf   ret   函数   阶乘   const   次方   

递归函数  : 函数调用本身。

列:

5的阶乘 :——》120

int mm(int a) {  

if (a<=1)  

   {       

  return a;    

}    

else    

{        

return mm(a-1)*a;   

  }

}

int main(int argc, const char * argv[])

{   

    int a=mm(5);   

     printf("%d\n",a);   

     return 0;

}

步奏:先传参进mm(5) ,   if  不满足,  esle  调用mm(4)*5

mm(4)    if  不满足,  esle  调用mm(3)*4

mm(3)    if  不满足,  esle  调用mm(2)*3

mm(2)   if  不满足,  esle  调用mm(1)*2

mm(1)    if  满足  。

return 返回值  1

综上所述  得 1*2*3*4*5

 

//2的4次方

int mm(int a,int b) {  

if (b<=1)  

   {       

  return a;    

}    

else    

{        

return mm(a,b-1)*a;   

  }

}

int main(int argc, const char * argv[])

{   

    int a=mm(2,4);   

     printf("%d\n",a);   

     return 0;

}

步奏:先传参进mm(2,4) ,   if  不满足,  esle  调用mm(2,3)*2

mm(2,3)    if  不满足,  esle  调用mm(2,2)*2

mm(2,2)    if  不满足,  esle  调用mm(2,1)*2,

mm(2,1)    if  满足  。

return 返回值  2

综上所述  得 2*2*2*2  得 16

递归函数

标签:调用   argv   nbsp   printf   ret   函数   阶乘   const   次方   

原文地址:http://www.cnblogs.com/wangjinshan/p/7110493.html

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