1. 程式人生 > 其它 >遞迴函式、演算法和生成式

遞迴函式、演算法和生成式

遞迴函式

  遞迴指的是函式在執行過程中直接或間接的呼叫了自身。

  遞迴的特點有兩個。

  1.遞推:

    指一層層往下推導答案(每次的推導相較前一次難度有所下降)。

  2.回溯:

    依據最後的結論倒推出最初需要的答案。

  函式的遞迴一定要有結束條件,不然就會報錯。

  

  為防止無限遞迴的情況,官網表示python預設的最大遞迴深度為1000次。(由於電腦效能等原因也可能是998、997次)

  可以通過sys方法來檢視和設定最大遞迴深度

二分法

  演算法指的是解決問題的高效方法。二分法屬於入門級的演算法。

  當想要在一堆的有序的數字中找到某個數字時,可以使用二分法來有效的達成目的。

  二分法的原理:

    找到這堆數字的中間的數,將它與要找的數進行大小的比較,如果較大,則在較大的一半中繼續切分。

    如果較小則在較小的一半中切分,直到找到要找的數。

  二分法的缺陷:

    只能在有序的資料集中使用,並且如果要找的數就在開頭,反而不如一個個數的笨辦法有效。

三元表示式

  三元表示式是一種程式碼的簡便寫法,當功能需求只是二選一時推薦使用三元表示式。

  三元表示式格式:

    條件達成採用的值 if 需要達成的條件 else 條件不達成時採用的值

  三元表示式可以進行巢狀,但不推薦這種形式。

  因為使用這種形式是為了程式碼的簡潔,進行巢狀反而違背了這種目的。

列表生成式

  列表生成式是一種簡便的生成列表的語法,它的作用是快速的生成列表。

字典生成式

  如果想只通過一個列表就生成字典,可以藉助enumerate方法(列舉)。

  enumerate的作用是返回兩個值,一個是數字,相當於列表的索引,另一個是列表的元素。

  通過enumerate方法可以將索引值當做k值,元素當做v值來快速生成字典。

匿名函式

  匿名函式指的是沒有函式名的函式。

  語法格式為:

    lambda 形參:返回值。

  由於沒有名字,使用匿名函式需要連關鍵詞一起寫,單獨使用時其實並不方便 ,所以一般和其他函式配合使用。