Python語言程序---代碼複用與函數遞歸(三)

代碼複用與函數遞歸(三)編程

函數遞歸segmentfault

在函數定義中,調用函數自身的方式就是遞歸。遞歸併非程序設計的專有名詞,在數學中也普遍存在。
例如:n!。在n!中,咱們定義當n=0時,n!爲1;除此以外,其他n!=n*(n-1)!這就是一種遞歸形式。函數

在遞歸的定義中有兩個關鍵的特性:鏈條和基例。鏈條指的是在遞歸定義中,它的計算過程是存在一種遞歸有序的鏈條關係。
例如:n!=n*(n-1)!,那麼n!與(n-1)!就構成了遞歸鏈條。image
基例指的是存在一個或多個不須要再次遞歸的實例,例如:當n=0時,定義n!的值爲1,這就是一種基例,它與其它的值之間不存在遞歸關係,它已經是遞歸的最末端。spa

這兩種關鍵特性就構成了遞歸的定義,缺乏任意一個都構不成遞歸。在數學中被成爲數學概括法,遞歸也能夠認爲是數學概括法思惟在編程中的一種體現。設計

能夠看到要實現遞歸須要利用函數與分支語句進行組合。首先遞歸自己就是一個函數,由於它須要調用自身,若是不經過函數來定義,那麼很難調用自身。
imageblog

接着在函數內部,須要區分基例和鏈條,因此要使用一個分支語句對輸入參數進行判斷,若是輸入參數是基例的參數條件,咱們就要給出基例的代碼,若是不是基例的參數條件,咱們要用鏈條的方式表達這種遞歸關係。!遞歸

計算機調用函數會開闢內存,將函數內容複製進來,代入參數進行運算。遞歸看起來是調用了同一個函數,但在計算機內存中並不同,會不停的開闢內存、複製函數、代入參數運算。內存

推薦觀看:笨辦法學Python!編程小白的第一本Python入門書!get

思惟導圖筆記image數學