求階乘函式:
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返回到函式呼叫處 }
編譯執行結果如下:
輸入要求階乘的數:55!=120--------------------------------Process exited after 1.553 seconds with return value 0請按任意鍵繼續. . .
上述程式碼我定義的是int型別,因為這個數不可能無限大,如果特別大,會超過int的範圍,如下:
輸入要求階乘的數:100100!=0--------------------------------Process exited after 1.575 seconds with return value 0請按任意鍵繼續. . .
留個問題給讀者請思考,最大可以求幾的階乘,為什麼?
最新評論