MySQL的階乘函式 C 階乘函式(遞迴)詳解

2021-10-17 22:04:19 字數 1668 閱讀 1511

遞迴計算階乘函式將接收乙個整數引數並計算其階乘。現在不妨用數學的例子來檢驗乙個遞迴的應用。

在數學中,符號 n! 表示數字 n 的階乘。整數 n 的階乘被定義如下。

n! = 1 x 2 x 3 x … x n; 如果 n>0

n =1; 如果 n = 0

規則規定,當 n 大於 0 時,其階乘是從 1 到 n 的所有正整數的乘積。例如,6! 可以計算為 1x2x3x4x5x6。規則還規定了基本情況:0 的階乘是 1。

可以使用遞迴定義乙個數的階乘,如下所示:

factorial(n) = n x fafactorial(n-1); 如果 n> 0

factorial(n) = 1; 如果 n = 0

這個遞迴定義的 c++ 實現語句如下:

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 的值和返回值。

圖 1 遞迴階乘函式**

下面的程式演示了 factorial 函式的使用:

// this program demonstrates a recursive function

// to calculate the factorial of a number.

#include

using namespace std;

// function prototype

int factorial(int);

int main()

int number;

cout << "enter an integer value and i will display\n";

cout << "its factorial: ";

cin >> number;

cout << "the factorial of " << number << " is ";

cout << factorial (number) << endl;

return 0;

int factorial(int num)

if (num == 0) //base case

return 1;

else

return num * factorial(num - 1);

程式輸出結果:

enter an integer value and i will display

its factorial: 4

the factorial of 4 is 24

階乘函式n!

include stdafx.h include iostream using namespace std int factorial int n if 0 n return 1 else r eturn n factorial n 1 int main int argc,char argv int...

048 計算階乘函式

計算階乘 fact.asm include irvine32.inc code main proc push 5 計算5!將引數儲存在棧中 call factorial 計算階乘 eax call writedec 顯示結果 call crlf call waitmsg exit main endp...

演算法筆記 階乘函式

1 階乘函式 遞迴 int recursionfactorial int n 階乘函式 遞迴 2 階乘函式 迴圈 int circulationfactorial int n 階乘函式 迴圈 3 測試函式 include intrecursionfactorial int n 階乘函式 遞迴 int...