python遞歸求階乘的方法
階乘:例如 5! 指的是“5的階乘”,即 5! = 1*2*3*4*5。
“遞歸”就是對自身進行調(diào)用的函數(shù)。
推薦學(xué)習(xí):Python視頻教程
def f(x): if x == 0: return 0 elif x == 1: return 1 else: return (x * f(x-1)) print(f(5))
代碼解釋:如果 x=5,那么就返回 5*f(4) 的值。而想知道這個值,就得先算出 f(4) 等于多少。根據(jù)函數(shù) f(x),f(4) = 4*f(3),所以 f(5) = 5*4*f(3)。以此類推,推到 f(5) = 5*4*3*2*f(1)。函數(shù) f(x) 說了,當(dāng) x==1 時,返回值為 1。所以:f(5) = 5*4*3*2*1 = 120。所以,輸出結(jié)果如下:
120
聽起來好像很麻煩,感覺不好理解。如果不用遞歸函數(shù)呢?用最基本的代碼,可以寫成:
f = 1 for i in range(1,6): f = f * i print(f)
結(jié)果一樣是120。