第二十八節,遞歸

遞歸的表現形式(此列不是遞歸只是說明遞歸的表現形式)
#遞歸的表現形式(此列不是遞歸只是說明遞歸的表現形式)
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層函數...

遞歸最簡單原理
程序自己本身調用本身稱之爲遞歸,相似於俄羅斯套娃,體如今代碼中:用戶執行函數,而函數裏又在執行函數自己,至關於寫了一個死循環函數,通常都須要用一個判斷來決定遞歸深度
#!/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
 

相關文章
相關標籤/搜索