在本文中,您將學(xué)習(xí)創(chuàng)建遞歸函數(shù)。調(diào)用自身的函數(shù)。
調(diào)用自身的函數(shù)稱為遞歸函數(shù)。并且,這種技術(shù)稱為遞歸。
void recurse() { ... .. ... recurse(); ... .. ... } int main() { ... .. ... recurse(); ... .. ... }
下圖顯示了遞歸調(diào)用的方式。
遞歸一直持續(xù)到滿足某些條件為止。
為了防止無(wú)限遞歸,可以在一個(gè)分支進(jìn)行遞歸調(diào)用而另一個(gè)不進(jìn)行遞歸調(diào)用的情況下使用if ... else語(yǔ)句(或類似方法)。
// n的階乘 = 1*2*3*...*n #include <iostream> using namespace std; int factorial(int); int main() { int n; cout<<"輸入一個(gè)數(shù)字來(lái)查找階乘: "; cin >> n; cout << "數(shù)字 " << n <<" 的階乘= " << factorial(n); return 0; } int factorial(int n) { if (n > 1) { return n*factorial(n-1); } else { return 1; } }
輸出結(jié)果
輸入一個(gè)數(shù)字來(lái)查找階乘: 4 數(shù)字 4的階乘= 24
假設(shè)用戶輸入了4,并將其傳遞給該factorial()函數(shù)。
在第一個(gè)factorial()函數(shù)中,測(cè)試if語(yǔ)句為true 內(nèi)的表達(dá)式。return num*factorial(num-1);語(yǔ)句被執(zhí)行,它調(diào)用第二個(gè)factorial()函數(shù),傳遞的參數(shù)num-1為3。
在第二個(gè)factorial()函數(shù)中,測(cè)試if語(yǔ)句為true內(nèi)的表達(dá)式。return num*factorial(num-1);語(yǔ)句被執(zhí)行,它調(diào)用第三個(gè)factorial()函數(shù),傳遞的參數(shù)為num-1為2。
在第三個(gè)factorial()函數(shù)中,測(cè)試if語(yǔ)句為true內(nèi)的表達(dá)式。return num*factorial(num-1);語(yǔ)句被執(zhí)行,它調(diào)用第四個(gè)factorial()函數(shù),并且傳遞的參數(shù)是num-1是1。
在第四個(gè)factorial()函數(shù)中,測(cè)試if語(yǔ)句為false內(nèi)的表達(dá)式。return 1;語(yǔ)句被執(zhí)行,返回1至第三個(gè)factorial()函數(shù)。
第三個(gè)factorial()函數(shù)將2返回到第二個(gè)factorial()函數(shù)。
第二個(gè)factorial()函數(shù)將6返回到第一個(gè)factorial()函數(shù)。
最后,第一個(gè)factorial()函數(shù)將24返回到main()函數(shù),該函數(shù)將顯示在屏幕上。