函數的遞歸調用


一、定義:函數的遞歸調用是函數的嵌套調用的一種特殊形式,表現為在調用一個函數的過程中又直接或間接地調用了自身,實現了循環,所以說遞歸的本質就是循環。

def f1():
    f1()  # 自我循環調用

def f2():
    f3()
def f3():
    f2()
# 互相循環調用

二、遞歸調用實現的循環與while循環的區別:while循環可以通過保持條件永遠為真實現無限循環,但是每次循環不會額外申請內存空間。遞歸調用每次都會申請新的局部空間,所以默認有上限次數1000,該次數可以修改。

三、遞歸調用的兩個階段

  1、回溯:一層層的調用直至滿足終止條件的過程稱為回溯。

  2、遞推:從滿足終止條件向外層逐層返回的過程稱為遞推。

def add(n):
    if n == 1:
        return 100
    return add(n - 1) + 1
print(add(6))  # 結果為 105
# add(6) = add(5) + 1
# add(5) = add(4) + 1
# add(4) = add(3) + 1
# add(3) = add(2) + 1
# add(2) = add(1) + 1 
# 以上是回溯過程
# add(1) = 100
# add(2) = 100 + 1 = 101
# add(3) = 101 + 1 = 102
# add(4) = 102 + 1 = 103
# add(5) = 103 + 1 = 104
# add(6) = 104 + 1 = 105
# 以上是遞推過程

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM