首页 > C > 递归 阅读:57,774

递归应用:阶乘

根据阶乘的定义很容易就想到递归方法,做法如下:

 

int fact(unsigned int  n)

{

     if(n==0)

         return 1;      //递归出口

     return n*fact(n-1);    //n*Fact(n-1)就是递归式,将求n的阶乘,转化为子问题求n-1的阶乘

}

int main(void)

{

     printf("10!=%d\n", fact(10));

     return 0;

}

因此在计算f(n)的阶乘的时候,如下图所示,需要递归调用函数计算f(n-1),直到遇到递归出口f(0),再将结果逐层返回上层函数,供上层函数计算。

 

                   

比如,欲计算10的阶乘,根据递归函数:

f(10)=10*f(9)=10*9*f(8)=10*9*8*f(7)=…10*9*8*7*6*5*4*3*2*1*f(0)

而根据递归的出口,f(0)为1,然后逐层返回上层函数,则f(10)=10*9*8*7*6*5*4*3*2*1,最近得到10的阶乘。

周哥教IT,分享编程知识,提高编程技能,程序员的充电站。跟着周哥一起学习,每天都有进步。

通俗易懂,深入浅出,一篇文章只讲一个知识点。

当你决定关注「周哥教IT」,你已然超越了90%的程序员!

IT黄埔-周哥教IT技术交流QQ群:213774841,期待您的加入!

二维码
微信扫描二维码关注