詳解python中遞迴函式

2022-09-29 05:57:11 字數 1079 閱讀 4640

函式執行流程

def foo1(b,b1=3):

print("foo1 called",b,b1)

def foo2(c):

foo3(c)

print("foo2 called",c)

def foo3(d):

print("foo3 called",d)

def main():

print("main called")

foo1(100,101)

foo2(200)

print("main ending ")

函式執行過程:

函式中壓棧,執行流程。

遞迴recursion

遞迴要求

斐波那契數列實現(f(1)=1,f(2)=1,f(3)=f(1)+f(2),f(4)=f(2)+f(3)……)

#斐波那契數列普通迴圈實現

a,b=0,1

for i in range(4):

a,b=b,a+b

print(a)

#斐波那契數列函式遞迴實現

def foo(n): #大量的重複計算

return 1 if n<3 else foo(n程式設計客棧-1)+foo(n-2)

#斐波那契數列函式迴圈實現

def fn(n,a=0,b=1):

a,b=b,a+b

if n==1:

return a

return fn(n-1,a,b)

遞迴的效能

迴圈稍微複雜一些,但是只要不是死迴圈,可以多次迭代直至算出結果

遞迴還有深度限制,如果遞迴複雜,函式反覆壓棧,棧記憶體很快會溢位

間接遞迴

def foo1():

foo2()

def foo2():

foo1()

間接遞迴,是通過www.cppcns.com別的函式呼叫了函式自身,但是如果構成了迴圈遞迴呼叫是非常危險的,但是往往這種情況在**複雜的情況下,還是有可能發生這種呼叫的,要用**的規範來避免這種遞迴呼叫的發生

遞迴總結

本文標題: 詳解python中遞迴函式

本文位址:

python中函式詳解

1 什麼是函式?函式是一種工具,封裝乙個可重複呼叫的 塊 2 為什麼要用函式?如果不使用函式,將變得冗餘。可讀性差 3 怎麼用函式?定義函式 呼叫函式 有參函式 defadd x,y return x y 無參函式 defwelecome print welecome to my home 空函式 ...

python中的遞迴函式

一 遞迴函式的特性 二 遞迴函式的使用示例 1.斐波拉契數列的實現 1.1 遞迴版本 1 遞迴版 2def fibo2 n,first num 0,second num 1 3if n 2 4return second num 5elif n 1 6return first num78 return...

python遞迴函式的詳解及案例

直接或間接的呼叫自身的函式,稱為遞迴函式。每呼叫一次自身,相當於複製乙份該函式,只不過引數有變化,引數的變化,就是重要的結束條件 一定要注意結束條件。用迴圈和遞迴分別求 100 求1到100的和 迴圈語句完成 def sum1 num sum2 0 for i in range 1,num 1 su...