1. 程式人生 > >python筆記(遞迴函式)

python筆記(遞迴函式)

遞迴函式
https://www.processon.com/(作圖)
1.最大遞迴深度預設是997
2.可以修改遞迴預設深度
例:

import sys
sys.setrecursionlimit(1000)

@遞迴缺點;佔記憶體
@遞迴優點:讓程式碼變簡單
@逐次向下呼叫,返回值依次向上迴歸

例題:
1.二分查詢演算法 必須處理有序的列表

l = [2,3,4,5,6,8,10,12,13,15,16,17,19,22,25,27,29,34,37]
def find(l,aim,start = 0,end = None):
    end = len(l) if end is None else end
    mid_index = (end - start) // 2 + start
    if start <= end:
        if l[mid_index] < aim:
            find(l,aim,start = mid_index + 1,end = end)
        elif l[mid_index] > aim:
            find(l,aim,start = start,end = mid_index -1)
        else:
            print('找到了!',mid_index,aim)
    else:
        print('找不到這個值!')
find(l,7)

2.三級選單程式碼

3.斐波那契(從結果往前推)

def fib(n):

    if n == 1 or n == 2:
        return 1
    return fib(n -1) +fib(n -2)    #雙遞迴
print(fib(40))

4.階乘

def func(n):
    if n == 1:                                      #由所傳引數向向下推,推到最後的一個引數作為判斷條件
        return 1
    return func(n-1)*n                              #由條件的性質可以嘗試推測
print(func(8))

在這裡插入圖片描述