Python初學者筆記:遞歸和高階函數

遞歸

簡單理解就是自己去引用自己,遞歸式函數,在函數中自己調用自己。

如果無窮遞歸,程序的內存就會溢出,效果類似於死循環,遞歸是解決問題的一種方式,它和循環很像,它的整體思想是,將一個大問題分解爲一個個的小問題,直到問題無法分解。

遞歸式函數的兩個要件:
基線條件:問題可以被分解爲的最小問題,當滿足基線條件時,遞歸就不再執行了
遞歸條件:將問題繼續分解的條件

def test(n):
    '''
    用於求任意數的階乘
    參數:
        n:要求階乘的數字
    '''
    if n ==1 :
        return 1
    return n * test(n-1)
print(test(10))
3628800

循環編寫起來比較容易,閱讀起來稍難,遞歸編寫起來稍難,但方便閱讀。

練習

創建一個函數,來爲任意數字做冪運算

def mi(a,b):
    '''
    用於爲任意的數字做冪運算
    參數:a要做冪運算的數字
         b做冪運算的次數
    '''
    if b==1:	#基線條件,求一次冪
        return a	
    return a * mi(a,b-1)	#遞歸條件

print(mi(3,2))

高階函數

在python中,函數是一等對象,一等對象一般都具有的特點:
1.對象是在運行時創建的
2.能賦值給變量或者作爲數據結構中的元素
3.能作爲參數傳遞
4.能作爲返回值返回

高階函數
高階函數至少要符合兩個特點之一
1.接收一個或多個函數作爲參數
2.將函數作爲返回值返回

接受函數作爲參數,或者將函數作爲返回值返回的函數就是高階函數

#創建一個列表
num=[1,2,3,4,5,6,7,8,9]
def test(num1):
    '''
    函數可以將指定列表中的所有偶數獲取出來,並保存到一個新列表中
    參數:
        num1:要進行篩選的列表
    '''
    num2=[] #新列表
    for i in num1:  #對有值列表進行篩選
        if i % 2 ==0:   #判斷i的奇偶
            num2.append(i)  #將偶數添加到新列表
    return num2 #返回新列表
print(num)
print(test(num))
[1, 2, 3, 4, 5, 6, 7, 8, 9]
[2, 4, 6, 8]
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章