鍍金池/ 教程/ C/ 一起talk C栗子吧(第三回:C語言實例--求階乘)
一起talk C栗子吧(第八回:C語言實例--素數(shù))
一起talk C栗子吧(第十八回:C語言實例--輸出十六進制)
一起talk C栗子吧(第十七回:C語言實例--棧二)
一起talk C栗子吧(第十九回:C語言實例--位操作)
一起talk C栗子吧(第十六回:C語言實例--棧一)
一起talk C栗子吧(第五回:C語言實例--數(shù)組巧妙賦值)
一起talk C栗子吧(第十二回:C語言實例--單鏈表一)
一起talk C栗子吧(第九回:C語言實例--最大公約數(shù))
一起talk C栗子吧(第二回:C語言實例--判斷閏年)
一起talk C栗子吧(第六回:C語言實例--生成隨機數(shù))
一起talk C栗子吧(第四回:C語言實例--斐波那契數(shù)列)
一起talk C栗子吧(第十四回:C語言實例--循環(huán)鏈表)
一起talk C栗子吧(第十五回:C語言實例--雙向鏈表)
一起talk C栗子吧(第二十一回:C語言實例--表達式求值)
一起talk C栗子吧(第三回:C語言實例--求階乘)
一起talk C栗子吧(第七回:C語言實例--進制轉(zhuǎn)換)
一起talk C栗子吧(第二十回:C語言實例--括號匹配)
一起talk C栗子吧(第一回:C語言實例概述)
一起talk C栗子吧(第十回:C語言實例--最小公倍數(shù))
一起talk C栗子吧(第十一回:C語言實例--文件組織結(jié)構(gòu))
一起talk C栗子吧(第十三回:C語言實例--單鏈表二)

一起talk C栗子吧(第三回:C語言實例--求階乘)

各位看官們,大家好,從今天開始,我們講大型章回體科技小說 :C栗子,也就是C語言實例。閑話休提, 言歸正轉(zhuǎn)。讓我們一起talk C語言實例吧!

看官們,上一回中咱們說的是判斷閏年的例子,這一回咱們說的例子是:求階乘。

看官們,階乘是數(shù)學中的一種運算,通常使用感嘆號來表示階乘。比如:3!表示3的階乘。階乘的定義是這 樣的:正整數(shù)n=0時,n的階段乘為1,n>0時,n的階乘為n*(n-1)!。

看官們,我在程序中使用了兩種方法來求階乘。一種是遞歸方法,另外一種是循環(huán)方法。正文中就不寫代 碼了,詳細的代碼如下,請大家參考使用:

     1  /* **************************
     2   * For Factorial
     3   * *************************/
     4  #include<stdio.h>
     5  
     6  #define SUCCESS 1
     7  #define FAILED  0
     8  #define BAD_PARAMETERS -1
     9  
    10  //使用遞歸方法來求階乘
    11  int Factorial(int n)
    12  {
    13      if(n < 0)
    14          return BAD_PARAMETERS;
    15  
    16      if(n == 0)
    17          return 1;
    18      else
    19          return n*Factorial(n-1);
    20  }
    21  
    22  //使用循環(huán)方法來求階乘
    23  int f(int n)
    24  {
    25      int res = 1;
    26      int i = 0;
    27  
    28      if(n < 0)
    29          return BAD_PARAMETERS;
    30  
    31      if(n == 0)
    32          return 1;
    33  
    34      for(i=0;i<n;++i)
    35          res *= (i+1);
    36  
    37      return res;
    38  }
    39  
    40  int main()
    41  {
    42      int result = 0;
    43      
    44      result = Factorial(5);
    45      if(result > 0)
    46          printf("%d \n",result);
    47  
    48      result = f(5);
    49      if(result > 0)
    50          printf("%d \n",result);
    51  
    52      return 0;
    53  }

補充一點:循環(huán)和遞歸是比較常見的方法,所以這里不做過多的說明。不過,在工程中盡量少用遞歸,一 般情況下,遞歸可以解決的問題,可以使用循環(huán)方法去解決。不推薦遞歸的理由是因為,遞歸的性能稍微 差一些,尤其在遞歸的嵌套比較深的時候。

各位看官,關(guān)于判求階乘的例子咱們就說到這里。欲知后面還有什么例子,且聽下回分解。