遞歸的表現形式(此列不是遞歸只是說明遞歸的表現形式)
#遞歸的表現形式(此列不是遞歸只是說明遞歸的表現形式) def f1(): return "遞歸的表現形式" #f1函數裏的功能,返回"遞歸的表現形式"字符串 def f2(): r = f1() #執行f1函數 return r #返回f1函數的結果 def f3(): r = f2() #執行f2函數 return r #返回f2函數的結果 def f4(): r = f3() #執行f3函數 return r #返回f3函數的結果 adc = f4() #執行f4函數 print(adc) #打印出 遞歸的表現形式 #遞歸就是嵌套式請求,向第一層請求,程序會自動一層一層的將請求信息傳遞到底層,而後將結果在一層一層的傳遞回來
初識遞歸
程序自己本身調用本身稱之爲遞歸,相似於俄羅斯套娃,體如今代碼中:用戶執行最外(N)層函數,最外側調用N-1層函數,N-1層函數調用N-2層函數...
![](http://static.javashuo.com/static/loading.gif)
遞歸最簡單原理
程序自己本身調用本身稱之爲遞歸,相似於俄羅斯套娃,體如今代碼中:用戶執行函數,而函數裏又在執行函數自己,至關於寫了一個死循環函數,通常都須要用一個判斷來決定遞歸深度
#!/usr/bin/env python # -*- coding:utf-8 -*- def f(a): #自定義函數 f(a) #再次執行自己函數 f(1) #執行函數,觸發函數循環
用遞歸寫一個斐波那契數列,0, 1, 1, 2, 3, 5, 8, 13, 21, 34, 55, 89, 144, 233,377,610,987
斐波那契數列每前兩位相加等於第3位
#!/usr/bin/env python # -*- coding:utf-8 -*- #用遞歸寫一個斐波那契數列 def f1(i, a, b): #自定義函數接收參數傳值 print(a) #打印每次遞歸的a if i == 5: #判斷每次遞歸的i是否等於5 return #若是i等於5就return返回,返回沒寫返回值就什麼都不返回,只是結束函數代碼塊終止遞歸 c = a + b #將接收到的a加以b從新賦值給c r = f1(i + 1, b, c) #將接收到的i加以1,接收到的b,新賦值給c,當作參數在次執行傳入函數自己進行遞歸 f1(1, 0, 1) #調用執行函數
只取一個遞歸次數的斐波那契數,也就是取遞歸某一次的斐波那契數
#!/usr/bin/env python # -*- coding:utf-8 -*- #只取一個遞歸次數的斐波那契數,也就是取遞歸某一次的斐波那契數 def f1(i, a, b): #自定義函數接收參數傳值 if i == 5: #判斷每次遞歸的i是否等於5 return a #若是i等於5就return返回a,結束函數代碼塊終止遞歸 c = a + b #將接收到的a加以b從新賦值給c r = f1(i + 1, b, c) #將接收到的i加以1,接收到的b,新賦值給c,當作參數在次執行傳入函數自己進行遞歸 return r #接收知足條件後返回的a而且遞歸方式返回給上一次執行函數 sf = f1(1, 0, 1) #調用執行函數 print(sf) #打印出結果 3