最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

python利用高階函數(shù)實(shí)現(xiàn)剪枝函數(shù)

 更新時間:2018年03月20日 10:28:31   作者:北門吹雪  
這篇文章主要為大家詳細(xì)介紹了python利用高階函數(shù)實(shí)現(xiàn)剪枝函數(shù)的相關(guān)資料,具有一定的參考價值,感興趣的小伙伴們可以參考一下

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

案例:

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

       需求:

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

如何解決?

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

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

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

       上臺階問題邏輯整理:

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

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

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

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

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

以上兩個問題通過遞歸來解決,就會出現(xiàn)一個問題,出現(xiàn)重復(fù)求解問題,把重復(fù)求解的過程剔除掉,在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
  # 當(dāng)最后臺階為0的時候,說明最后只是走了一次
  if n == 0:
    count = 1
  # 當(dāng)最后臺階不為0的時候,說明還需要走至少一次
  elif n > 0:
    # 對三種情況進(jìn)行分別處理momo
    for step in steps:
      count += climb(n-step, steps)
       
  # 返回每次遞歸的計(jì)數(shù)
  return count
 
if __name__ == '__main__':
  print(climb(10, (1, 2, 3)))
  print(fibonacci(20))

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

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

相關(guān)文章

  • Python從Excel讀取數(shù)據(jù)并使用Matplotlib繪制成二維圖像

    Python從Excel讀取數(shù)據(jù)并使用Matplotlib繪制成二維圖像

    本課程實(shí)現(xiàn)使用 Python 從 Excel 讀取數(shù)據(jù),并使用 Matplotlib 繪制成二維圖像。這一過程中,將通過一系列操作來美化圖像,最終得到一個可以出版級別的圖像。本課程對于需要書寫實(shí)驗(yàn)報告,學(xué)位論文,發(fā)表文章,做報告的學(xué)員具有較大價值
    2023-02-02
  • python3排序的實(shí)例方法

    python3排序的實(shí)例方法

    在本篇文章里小編給大家整理的是一篇關(guān)于python3排序的實(shí)例方法,有興趣的朋友們可以學(xué)習(xí)參考下。
    2020-10-10
  • 詳解Pytorch 使用Pytorch擬合多項(xiàng)式(多項(xiàng)式回歸)

    詳解Pytorch 使用Pytorch擬合多項(xiàng)式(多項(xiàng)式回歸)

    這篇文章主要介紹了詳解Pytorch 使用Pytorch擬合多項(xiàng)式(多項(xiàng)式回歸),小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2018-05-05
  • Python之列表推導(dǎo)式最全匯總(中篇)

    Python之列表推導(dǎo)式最全匯總(中篇)

    這篇文章主要介紹了Python之列表推導(dǎo)式最全匯總(中篇),本文章內(nèi)容詳細(xì),通過案例可以更好的理解列表推導(dǎo)式的相關(guān)知識,本模塊分為了三部分,本次為中篇,需要的朋友可以參考下
    2023-01-01
  • python flask web服務(wù)實(shí)現(xiàn)更換默認(rèn)端口和IP的方法

    python flask web服務(wù)實(shí)現(xiàn)更換默認(rèn)端口和IP的方法

    今天小編就為大家分享一篇python flask web服務(wù)實(shí)現(xiàn)更換默認(rèn)端口和IP的方法,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2019-07-07
  • 極速整理文件Python自動化辦公實(shí)用技巧

    極速整理文件Python自動化辦公實(shí)用技巧

    當(dāng)涉及到自動化辦公和文件整理,Python確實(shí)是一個強(qiáng)大的工具,在這篇博客文章中,將深入探討極速整理文件!Python自動化辦公新利器這個話題,并提供更加豐富和全面的示例代碼,以便讀者更好地理解和運(yùn)用這些技巧
    2024-01-01
  • python如何將一個四位數(shù)反向輸出

    python如何將一個四位數(shù)反向輸出

    這篇文章主要介紹了python如何將一個四位數(shù)反向輸出,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2022-05-05
  • Python生成隨機(jī)數(shù)的方法

    Python生成隨機(jī)數(shù)的方法

    這篇文章主要介紹了Python生成隨機(jī)數(shù)的方法,有需要的朋友可以參考一下
    2014-01-01
  • Python 列表反轉(zhuǎn)顯示的四種方法

    Python 列表反轉(zhuǎn)顯示的四種方法

    這篇文章主要介紹了Python 列表反轉(zhuǎn)顯示的四種方法,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2020-11-11
  • Python爬蟲包BeautifulSoup學(xué)習(xí)實(shí)例(五)

    Python爬蟲包BeautifulSoup學(xué)習(xí)實(shí)例(五)

    這篇文章主要為大家詳細(xì)介紹了Python爬蟲包BeautifulSoup的學(xué)習(xí)實(shí)例,具有一定的參考價值,感興趣的朋友可以參考一下
    2018-06-06

最新評論

九江县| 乐安县| 赞皇县| 临高县| 六盘水市| 康马县| 万盛区| 诸暨市| 凤庆县| 邵武市| 平塘县| 乐都县| 江阴市| 崇州市| 长海县| 阿图什市| 浠水县| 乌什县| 鸡西市| 浦东新区| 尼玛县| 秭归县| 溆浦县| 海丰县| 西乡县| 武定县| 蛟河市| 舞钢市| 吴川市| 河西区| 阿克苏市| 皋兰县| 湘潭县| 高雄市| 江陵县| 佛教| 中超| 卢氏县| 通州区| 兴文县| 武邑县|