国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 開發 > Python > 正文

Python中使用遞歸函數

2023-04-25 12:32:07
字體:
來源:轉載
供稿:網友

在一個函數定義中,自己調用自己的編程方法稱之為遞歸(Recursion)。

一、遞歸簡介

一般來說,遞歸需要有遞歸前進階段、遞歸邊界條件和遞歸返回階段。當遞歸條件不滿足時,遞歸前推;當遞歸條件滿足時,遞歸返回。

如我們要求5的階乘(5!),則:

5! = 5 × 4!

我們需要求出4的階乘后再乘以5就行了,而要求4!:

4! = 4 × 3!

我們需要進一步求出3的階乘,而

3! = 3 × 2!

我們需要進一步求出2的階乘,而

2! = 2 × 1!

這時我們知道1的階乘是1。以上這些步驟就是遞歸的“前推”過程。

在求出1的階乘后,我們就知道

2! = 2 × 1! = 2× 1 = 2

則:

3! = 3 × 2! = 3 × 2 = 6

則:

4! = 4 × 3! = 4 × 6 = 24

則:

5! = 5 × 4! = 5 × 24 = 120

這樣,我們就得到了5!是120。上面這些步驟就是遞歸“返回”的過程。

用圖表示如下:

Python遞歸示意圖

二、使用遞歸方法求一個數的階乘

#遞歸法求n!

def factorial(n):
    if n == 1:
        return 1
    else:
        return n * factorial(n - 1)

result = factorial(5)
print("5!= ", result)
result = factorial(10)
print("10!= ", result)

執行結果如下:

5!= 120
10!= 3628800

三、使用遞歸方法求斐波那契數列

在前面文章中《Python使用while循環輸出斐波那契數列》介紹了斐波那契數列的算法,并給出了幾種求斐波那契數列的算法。這里再重新給出一遍。

def Fibonacci(n):
    if n < 0:
        raise IndexError('參數不能小于0。')
    if n == 0:
        return 0
    elif n <= 2:
        return 1
    else:
        return Fibonacci(n - 1) + Fibonacci(n - 2)

for i in range(16):
    print(Fibonacci(i), end = " ")

輸出結果如下:

0 1 1 2 3 5 8 13 21 34 55 89 144 233 377 610

四、使用遞歸的利弊

使用遞歸有時使程序更加簡潔,減少代碼量。但對新手來說,遞歸比較難以理解,而且使用不當的話,可能使程序無法正常終止。大多數情況下,可以使用循環來替代遞歸。

本文(完)

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 惠安县| 潜山县| 广饶县| 新营市| 邢台县| 海晏县| 甘孜| 城步| 稷山县| 黔东| 南木林县| 托里县| 大厂| 鹿邑县| 准格尔旗| 左贡县| 淮滨县| 大宁县| 大竹县| 通辽市| 湘潭县| 洞头县| 汝城县| 兴海县| 新营市| 彰化市| 灌南县| 天全县| 合江县| 文安县| 彭泽县| 大理市| 长治市| 鸡西市| 正阳县| 长沙县| 含山县| 格尔木市| 佛山市| 峨边| 太原市|