3135161701 发表于 2021-12-15 21:43:32

c语言递归

用递归算法计算n!


#include "stdio.h"
long fact(int n)
   { long f;
      if(n==1)f=1;
      else    f=n*fact(n-1);    /*此处的fact(n-1)有点不太懂*/
      returnf;
}
voidmain()
   { long y;int n;
      scanf("%d",&n);
      y=fact(n);
      printf("%d!=%d\n",n,y);
}

此处fact(n-1)怎么个递归法,逻辑有点乱,求助!!!!

3135161701 发表于 2021-12-15 21:50:34

{:10_247:}

jackz007 发表于 2021-12-15 21:51:58

本帖最后由 jackz007 于 2021-12-15 21:58 编辑

#include <stdio.h>
unsigned long long fact(int n)
{
      return (n > 1) ? n * fact(n - 1) : 1LL ;
}

int main(void)
{
      unsigned long long y                   ;
      int n                                  ;
      scanf("%d" , & n)                      ;
      printf("%d! = %I64u\n" , n , fact(n));
}
      以计算 fact(5) 为例,分析递归过程
fact(5) = 5 * fact(4)
                   fact(4) = 4 * fact(3)
                                    fact(3) = 3 * fact(2)
                                                         fact(2) = 2 * fact(1)
                                                                            fact(1) = 1
fact(5) = 5 * fact(4) = 5 * 4 * fact(3) = 5 * 4 * 3 * fact(2) = 5 * 4 * 3 * 2 * fact(1) = 5 * 4 * 3 * 2 * 1

3135161701 发表于 2021-12-15 21:54:46

jackz007 发表于 2021-12-15 21:51


写的有点深奥,我初学啊,好多的没怎么看懂,我只看出来是简写的{:5_99:}

3135161701 发表于 2021-12-15 22:00:19

jackz007 发表于 2021-12-15 21:51
以计算 fact(5) 为例,分析递归过程

fact(5) = 5 * fact(4) = 5 * 4 * fact(3) = 5 * 4 * 3 * ...

后面这个一下子看懂了{:10_254:}感谢感谢

hornwong 发表于 2021-12-15 23:10:59

{:5_95:}

心驰神往 发表于 2021-12-16 08:04:15

{:10_256:}

1molHF 发表于 2021-12-16 08:18:32

{:10_256:}

阿萨德按时 发表于 2021-12-16 08:34:26

{:10_279:}

小bai学c 发表于 2021-12-16 09:43:45

这个小甲鱼之前视频里讲过的,{:5_106:}

伽羅~ 发表于 2021-12-16 10:05:06

{:10_297:}

ohhohh 发表于 2021-12-16 15:37:29

{:10_254:}

100gram 发表于 2021-12-18 12:14:27

{:10_256:}

AdiosSpike 发表于 2021-12-18 22:40:21

{:10_327:}
页: [1]
查看完整版本: c语言递归