天天看點

pyhton遞歸與代碼複用

遞歸

函數定義中調用函數自身的方式稱為遞歸。

兩個關鍵特征:

  • 鍊條:計算過程存在遞歸鍊條
  • 基例:存在一個或多個不需要再次遞歸的基例,遞歸是數學歸納法思維的變成展現

執行個體:

斐波拉契數列

F(n) = F(n-1) + F(n-2)  (n>2), 1 (n=1), 1 (n=2)
def feibo(n):
    if n ==1 or n==2: #遞歸基例
        return 1
    else:
        return feibo(n-1)+feibo(n-2)
           

字元串反轉

def rvs(str):   
     if str == ' ' #遞歸基例      
        return str   
    else:       
        return rvs(str[1:])+str[0]
           

代碼複用

把代碼當成資源進行抽象,函數和對象是代碼複用的兩種主要形式,特點:

  • 代碼資源化:程式代碼是一種用來表達計算的資源
  • 代碼抽象化:使用函數等方法對代碼賦予更進階别的定義
  • 代碼複用:同一份代碼在需要時可以重複使用

子產品化設計

分而治之

  • 通過函數或對象封裝将程式劃分為子產品及子產品間的表達
  • 具體包括:主程式、子程式和子程式間的關系
  • 分而治之:一種分而治之,分層抽象,體系化的設計思想

緊耦合,松耦合

  • 緊耦合:兩個部分之間的交流很多,無法獨立存在
  • 松耦合:部分之間的交流少,可以獨立存在
  • 子產品内部緊耦合,子產品之間松耦合

繼續閱讀