函數遞歸 函數遞歸:函數的遞歸調用,即在函數調用的過程中,又直接或間接地調用了函數本身 直接調用 間接調用 ...
函數遞歸
函數遞歸:函數的遞歸調用,即在函數調用的過程中,又直接或間接地調用了函數本身
# import sys # print(sys.getrecursionlimit()) # sys.setrecursionlimit(10000) # print(sys.getrecursionlimit())
直接調用
def foo(): print('from foo') foo() foo()
間接調用
def bar(): print('from bar') foo() def foo(): print('from foo') bar() foo()
遞歸分為兩個階段
1、回溯:
註意:一定要在滿足某種條件結束回溯,否則的無限遞歸
2、遞推
總結:
1、遞歸一定要有一個明確地結束條件
2、沒進入下一次遞歸,問題的規模都應該減少
3、在python中沒有尾遞歸優化
# age(5)=age(4)+2 # age)4)=age(3)+2 # age(3)=age(2)+2 # age(2)=age(1)+2 # age(1)=18 # age(n)=age(n-1)+2 # n > 1 # age(n)=18 #n=1 # # def age(n): # if n == 1: # return 18 # return age(n-1)+2 #age(4)+2 # # age(5) items=[1,[2,[3,[4,[5,[6,[7,[8,[9,[10,]]]]]]]]]] def tell(l): for item in l: if type(item) is not list: print(item) else: tell(item) tell(items)