遞歸
簡單理解就是自己去引用自己,遞歸式函數,在函數中自己調用自己。
如果無窮遞歸,程序的內存就會溢出,效果類似於死循環,遞歸是解決問題的一種方式,它和循環很像,它的整體思想是,將一個大問題分解爲一個個的小問題,直到問題無法分解。
遞歸式函數的兩個要件:
基線條件:問題可以被分解爲的最小問題,當滿足基線條件時,遞歸就不再執行了
遞歸條件:將問題繼續分解的條件
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]