遞迴指的是函式在執行過程中直接或間接的呼叫了自身。
遞迴的特點有兩個。
1.遞推:
指一層層往下推導答案(每次的推導相較前一次難度有所下降)。
2.回溯:
依據最後的結論倒推出最初需要的答案。
函式的遞迴一定要有結束條件,不然就會報錯。
為防止無限遞迴的情況,官網表示python預設的最大遞迴深度為1000次。(由於電腦效能等原因也可能是998、997次)
可以通過sys方法來檢視和設定最大遞迴深度
演算法指的是解決問題的高效方法。二分法屬於入門級的演算法。
當想要在一堆的有序的數字中找到某個數字時,可以使用二分法來有效的達成目的。
二分法的原理:
找到這堆數字的中間的數,將它與要找的數進行大小的比較,如果較大,則在較大的一半中繼續切分。
如果較小則在較小的一半中切分,直到找到要找的數。
二分法的缺陷:
只能在有序的資料集中使用,並且如果要找的數就在開頭,反而不如乙個個數的笨辦法有效。
三元表示式是一種**的簡便寫法,當功能需求只是二選一時推薦使用三元表示式。
三元表示式格式:
條件達成採用的值if需要達成的條件else條件不達成時採用的值
三元表示式可以進行巢狀,但不推薦這種形式。
因為使用這種形式是為了**的簡潔,進行巢狀反而違背了這種目的。
列表生成式是一種簡便的生成列表的語法,它的作用是快速的生成列表。
如果想只通過乙個列表就生成字典,可以借助enumerate方法(列舉)。
enumerate的作用是返回兩個值,乙個是數字,相當於列表的索引,另乙個是列表的元素。
通過enumerate方法可以將索引值當做k值,元素當做v值來快速生成字典。
匿名函式指的是沒有函式名的函式。
語法格式為:
lambda 形參:返回值。
匿名函式 列表生成式 字典生成式 遞迴
語法 語法格式為 lambda 引數1,引數2,引數 引數可以省略 邏輯表示式 即結果,不可省略 引數的範圍 可省略 lambda 引數 結果 lambda x,y x y 函式輸入是x和y,輸出是它們的積x y lambda none 函式沒有輸入引數,輸出是none lambda args su...
遞迴和生成器函式
如果函式包含了對其自身的呼叫,該函式就是遞迴。遞迴廣泛應用於語言識別和使用遞迴函式的數學應用中。例如 斐波那契數列和求階乘等。下面就上面兩種使用舉例 斐波那契數列 in 12 def fib n if n 0 return 1 if n 1 return 1 return fib n 2 fib n...
三元表示式 生成式和函式遞迴
x 1 y 2res x if x y else y print res res 111111 if egon egon else 2222222222 print res 三元表示式可直接做返回值 def func x,y if x y return x else return y def fun...