C語言 遞迴的簡單介紹

2021-08-03 18:36:36 字數 1263 閱讀 1169

一、基本內容:

c語言中的函式可以遞迴呼叫,即:可以直接(簡單遞迴)或間接(間接遞迴)地自己調自己。

要點:1、c語言函式可以遞迴呼叫。

2、可以通過直接或間接兩種方式呼叫。目前只討論直接遞迴呼叫。

二、遞迴條件

採用遞迴方法來解決問題,必須符合以下三個條件:

1、可以把要解決的問題轉化為乙個新問題,而這個新的問題的解決方法仍與原來的解決方法相同,只是所處理的物件有規律地遞增或遞減。

說明:解決問題的方法相同,呼叫函式的引數每次不同(有規律的遞增或遞減),如果沒有規律也就不能適用遞迴呼叫。

2、可以應用這個轉化過程使問題得到解決。

說明:使用其他的辦法比較麻煩或很難解決,而使用遞迴的方法可以很好地解決問題。

3、必定要有乙個明確的結束遞迴的條件。

說明:一定要能夠在適當的地方結束遞迴呼叫。不然可能導致系統崩潰。

三、遞迴例項

例:使用遞迴的方法求n!

當n>1時,求n!的問題可以轉化為n*(n-1)!的新問題。

比如n=5:

第一部分:5*4*3*2*1 n*(n-1)!

第二部分:4*3*2*1 (n-1)*(n-2)!

第三部分:3*2*1 (n-2)(n-3)!

第四部分:2*1 (n-3)(n-4)!

第五部分:1 (n-5)! 5-5=0,得到值1,結束遞迴。

源程式:

fac(int n)

}main( )

}四、遞迴說明

1、當函式自己呼叫自己時,系統將自動把函式中當前的變數和形參暫時保留起來,在新一輪的呼叫過程中,系統為新呼叫的函式所用到的變數和形參開闢另外的存 儲單元(記憶體空間)。每次呼叫函式所使用的變數在不同的記憶體空間。

2、遞迴呼叫的層次越多,同名變數的占用的儲存單元也就越多。一定要記住,每次函式的呼叫,系統都會為該函式的變數開闢新的記憶體空間。

3、當本次呼叫的函式執行結束時,系統將釋放本次呼叫時所占用的記憶體空間。程式的流程返回到上一層的呼叫點,同時取得當初進入該層時,函式中的變數和形參 所占用的記憶體空間的資料。

4、所有遞迴問題都可以用非遞迴的方法來解決,但對於一些比較複雜的遞迴問題用非遞迴的方法往往使程式變得十分複雜難以讀懂,而函式的遞迴呼叫在解決這類 問題時能使程式簡潔明瞭有較好的可讀性;但由於遞迴呼叫過程中,系統要為每一層呼叫中的變數開闢記憶體空間、要記住每一層呼叫後的返回點、要增加許多額外的 開銷,因此函式的遞迴呼叫通常會降低程式的執行效率。

五、程式流程

fac(int n) /*每次呼叫使用不同的引數*/

}

C遞迴函式(一) 簡單介紹

我們先來看乙個簡單的函式呼叫例子 include 定義乙個簡單的列印函式 print num void print num int n intmain 執行結果 n 5 ok,現在我們對這個c程式進行一些改造 include void print num int n int main 執行結果 n ...

簡單c語言程式介紹

下面先介紹幾個簡單的c語言程式,然後從中分析c語言程式的特點。例 1.輸出一行資訊 intmain intargc,const char argv 本程式的作用是輸出以下一行字 hello,world.第一行,main 是函式的名字,表示 主函式 應用程式從此相互開始執行,mian 前面的 int ...

c語言中函式的簡單介紹

c語言中函式的介紹 函式,簡單的說就是 的打包。存放在乙個地方,當需要的時候呼叫。函式分類 1.無參無返回值函式 void func 2.無參有返回值函式 int func 3.有參無返回值函式 void func int num 4.有參有返回值函式 int func int num 此處講解有參...