日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > python >内容正文

python

python中高阶函数改写学生信息管理程序_python利用高阶函数实现剪枝函数

發(fā)布時間:2025/3/20 python 26 豆豆
生活随笔 收集整理的這篇文章主要介紹了 python中高阶函数改写学生信息管理程序_python利用高阶函数实现剪枝函数 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

本文為大家分享了python利用高階函數(shù)實現(xiàn)剪枝函數(shù)的具體代碼,供大家參考,具體內(nèi)容如下

案例:

某些時候,我們想要為多個函數(shù),添加某種功能,比如計時統(tǒng)計,記錄日志,緩存運算結(jié)果等等

需求:

在每個函數(shù)中不需要添加完全相同的代碼

如何解決?

把相同的代碼抽調(diào)出來,定義成裝飾器

求斐波那契數(shù)列(黃金分割數(shù)列),從數(shù)列的第3項開始,每一項都等于前兩項之和

求一個共有10個臺階的樓梯,從下走到上面,一次只能邁出1~3個臺階,并且不能后退,有多少中方法?

上臺階問題邏輯整理:

每次邁出都是 1~3 個臺階,剩下就是 7~9 個臺階

如果邁出1個臺階,需要求出后面9個臺階的走法

如果邁出2個臺階,需要求出后面8個臺階的走法

如果邁出3個臺階,需要求出后面7個臺階的走法

此3種方式走法,通過遞歸方式實現(xiàn),遞歸像樹,每次遞歸都生成子節(jié)點函數(shù)

以上兩個問題通過遞歸來解決,就會出現(xiàn)一個問題,出現(xiàn)重復求解問題,把重復求解的過程剔除掉,在c++語言中稱為剪枝函數(shù)

#!/usr/bin/python3

def jian_zhi(func):

# 中間字典,判斷已經(jīng)是否求解過

median = {}

def wrap(*args):

# 假如不在中間字典中,說明沒有求解過,添加到字典中去,在的話,直接返回

if args not in median:

median[args] = func(*args)

return median[args]

return wrap

@jian_zhi

def fibonacci(n):

if n <= 1:

return 1

return fibonacci(n-1) + fibonacci(n-2)

@jian_zhi

def climb(n, steps):

count = 0

# 當最后臺階為0的時候,說明最后只是走了一次

if n == 0:

count = 1

# 當最后臺階不為0的時候,說明還需要走至少一次

elif n > 0:

# 對三種情況進行分別處理momo

for step in steps:

count += climb(n-step, steps)

# 返回每次遞歸的計數(shù)

return count

if __name__ == '__main__':

print(climb(10, (1, 2, 3)))

print(fibonacci(20))

所謂的剪枝函數(shù)不過是保證每次遞歸的函數(shù)唯一性,利用中間字典保存已經(jīng)執(zhí)行過得函數(shù)和參數(shù),通過判斷參數(shù),剔除重復的函數(shù)調(diào)用

以上就是本文的全部內(nèi)容,希望對大家的學習有所幫助,也希望大家多多支持腳本之家。

總結(jié)

以上是生活随笔為你收集整理的python中高阶函数改写学生信息管理程序_python利用高阶函数实现剪枝函数的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。