1. 程式人生 > 實用技巧 >C語言 | 遞迴求n的階乘

C語言 | 遞迴求n的階乘

例30:C語言求n!,要求用遞迴實現。

解題思路:本題和例29思想差不多,都是用遞迴來實現,讀者可以回顧一下《C語言 | 遞迴求年齡

求階乘函式:

int factorial(int number)//自定義階乘函式
{
  int temp;//定義整型變數
  if(number<0)//如果這個數小於0
  {
    printf("錯誤資料請,輸入大於0的數!");//不符合條件,無法求
  }
  else if(number==0||number==1)//0或者1本身的階乘是1
  {
    temp=1;
  }
  else
  {
    temp=factorial(number-1)*number;//
否則求這個數與前一個數相乘的結果 } return temp;//將temp返回到函式呼叫處 }

原始碼演示:

#include<stdio.h>//標頭檔案
int main()//主函式
{
  int factorial(int number);//自定義階乘函式宣告
  int number,temp;//定義變數
  printf("輸入要求階乘的數:");//提示語句
  scanf("%d",&number);//鍵盤輸入相求的數
  temp=factorial(number);//呼叫階乘函式
  printf("%d!=%d",number,temp) ;//輸出結果
  return
0;//主函式返回值為0 } int factorial(int number)//自定義階乘函式 { int temp;//定義整型變數 if(number<0)//如果這個數小於0 { printf("錯誤資料請,輸入大於0的數!");//不符合條件,無法求 } else if(number==0||number==1)//0或者1本身的階乘是1 { temp=1; } else { temp=factorial(number-1)*number;//否則求這個數與前一個數相乘的結果 } return temp;//將temp返回到函式呼叫處 }

編譯執行結果如下:

輸入要求階乘的數:5
5!=120
--------------------------------
Process exited after 1.553 seconds with return value 0
請按任意鍵繼續. . .

上述程式碼我定義的是int型別,因為這個數不可能無限大,如果特別大,會超過int的範圍,如下:

輸入要求階乘的數:100
100!=0
--------------------------------
Process exited after 1.575 seconds with return value 0
請按任意鍵繼續. . .

留個問題給讀者請思考,最大可以求幾的階乘,為什麼?

C語言學習路線

C語言開發工具

C語言|遞迴求n!