1. 程式人生 > >c#遞迴理解

c#遞迴理解

什麼是遞迴函式?

任何一個方法既可以呼叫其他方法又可以呼叫自己,而當這個方法呼叫自己時,我們就叫它遞迴函式或者遞迴方法!

說白了,就是呼叫自己。

通常遞迴有兩個特點:    

1.遞迴方法一直會呼叫自己直到某些條件滿足,也就是說一定要有出口;

2.遞迴方法會有一些引數,而它會把這些新的引數值傳遞給自己;(自己調自己);

個人理解:

1,需要設定一個邊界,也就是什麼時間結束。

2,需要遞迴的邏輯,也就是遞迴的公式

 

舉個例子:

1.階乘

階乘(!)是小於某個數的所有正整數的乘積;

f(n)=n*(n-1)

首先,我們先確認邊界是什麼?

其次,我們要知道邏輯是什麼?

邊界:當n=1時,他的階乘就是1,也就是結束的時候

邏輯:上面其實已經給出來了 就是f(n)=n*(n-1)

好,那我們現在用程式來實現

 

2.(Fibonacci)斐波拉切數列:

Fibonacci數列是按以下順序排列的數字:

1,1,2,3,5,8,13,21,34,55....

我們不難發現數列的排列規律是:後一個數加上前一個數,以此類推;

然後我們來確認2個點

1,邊界:你可以發現 當n == 0 n ==1 時就可以觸發邊界

2,邏輯:不難看出  Fn=F(n-1)+F(n-2);

下面是計算Fabonacci數列的一種實現方法

總結:方法實現體內再次呼叫方法本身的本質是多個方法的簡寫;

   它既可以呼叫其他方法,又可以呼叫自身.

   遞迴一定要有出口;