一、遞歸函數(shù)
函數(shù)是可以被調(diào)用的,且一個函數(shù)內(nèi)部可以調(diào)用其他函數(shù)。如果一個函數(shù)在內(nèi)部調(diào)用本身,這個函數(shù)就是一個遞歸函數(shù)。函數(shù)遞歸調(diào)用的過程與循環(huán)相似,而且理論上,所有的遞歸函數(shù)都可以寫成循環(huán)的方式,但是遞歸函數(shù)的優(yōu)點是定義簡單,邏輯清晰。遞歸和循環(huán)都是一個重復(fù)的操作的過程,這些重復(fù)性的操作必然是需要有一定的規(guī)律性的。另外,很明顯遞歸函數(shù)也需要一個結(jié)束條件,否則就會像死循環(huán)一樣遞歸下去,直到由于棧溢出而被終止(這個下面介紹)。
可見,要實現(xiàn)一個遞歸函數(shù)需要確定兩個要素:
遞歸規(guī)律
結(jié)束條件
1. 實例:計算正整數(shù)n的階乘 n! = 1 * 2 * 3 * ... * n
循環(huán)實現(xiàn)
思路有兩個:
從1乘到n,需要額外定義一個計數(shù)器存放n當(dāng)前的值
從n乘到1,無需額外定義計數(shù)器,直接對n進(jìn)行減1操作,直到n=0返回1結(jié)束
def fact(n): if n == 0: return 1 result = 1 while n >