n! = 1 X 2 X 3 X … X n; 如果 n>0
n =1; 如果 n = 0
factorial(n) = n X fafactorial(n-1); 如果 n> 0
factorial(n) = 1; 如果 n = 0
int factorial(int num) { if (num == 0) //基本情況返回1; return 1; else return num * factorial(num - 1); }來看一個顯示 3! 的值的程式,其語句如下:
cout << factorial(3) << endl;
第一次呼叫該函數時,num 被設定為 3,所以 if 語句將執行以下程式碼行:return num * factorial(num - 1);
雖然這是一個 return 語句,但它並不會立即返回,這是因為在確定返回值之前,必須確定 factorial(num-1) 的值。該函數被遞回呼叫,直到第 4 次呼叫,其中的 num 引數將被設定為 0。圖 1 中直觀地說明了函數每次呼叫期間 num 的值和返回值。