遞歸
函數定義中調用函數自身的方式稱為遞歸。
兩個關鍵特征:
- 鍊條:計算過程存在遞歸鍊條
- 基例:存在一個或多個不需要再次遞歸的基例,遞歸是數學歸納法思維的變成展現
執行個體:
斐波拉契數列
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]
代碼複用
把代碼當成資源進行抽象,函數和對象是代碼複用的兩種主要形式,特點:
- 代碼資源化:程式代碼是一種用來表達計算的資源
- 代碼抽象化:使用函數等方法對代碼賦予更進階别的定義
- 代碼複用:同一份代碼在需要時可以重複使用
子產品化設計
分而治之
- 通過函數或對象封裝将程式劃分為子產品及子產品間的表達
- 具體包括:主程式、子程式和子程式間的關系
- 分而治之:一種分而治之,分層抽象,體系化的設計思想
緊耦合,松耦合
- 緊耦合:兩個部分之間的交流很多,無法獨立存在
- 松耦合:部分之間的交流少,可以獨立存在
- 子產品内部緊耦合,子產品之間松耦合