1. 程式人生 > >14 python初學(高階函數 遞歸函數 內置函數)

14 python初學(高階函數 遞歸函數 內置函數)

align 執行 函數返回值 效率 n) pytho span n-1 問題

高階函數:1. 函數名是一個變量,函數名可以進行賦值

2. 函數名可以作為函數參數,還可以作為函數返回值(函數名稱作為函數返回值時返回的是:函數的地址;print 這個返回值的調用相當於執行這個函數。 函數調用作為函數返回值相當於返回這個函數的執行結果)

def f(n):
    return n*n
def foo(a, b, func):
    return func(a)+func(b)

print(foo(1, 2, f))

# >>> 5

遞歸函數:

  1. 調用自身函數
  2. 設置結束條件
  3. 每次進入更深一層遞歸時,問題規模相比上一層都有所減少
  4. 但凡是遞歸可以寫的函數,循環都可以解決
  5. 遞歸的效率在很多時候非常低,遞歸層次過多會導致棧溢出

經典案例:斐波那切數列

# 0 1 1 2 3 5 8 13 21
# febo(1) = 0    febo(2) = 1  febo(3) = 1
# febo(n) = feb(n-1) + feb (n-2)
def febo(n):
    if n == 1:
        return 0
    if n == 2:
        return 1
    return febo(n-1)+febo(n-2)

print(febo(4))


內置函數:

參考如下博客:https://www.cnblogs.com/y-m-f/p/7764798.html

14 python初學(高階函數 遞歸函數 內置函數)