第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號(hào)安全,請(qǐng)及時(shí)綁定郵箱和手機(jī)立即綁定
已解決430363個(gè)問(wèn)題,去搜搜看,總會(huì)有你想問(wèn)的

如何讓一個(gè)函數(shù)記住2個(gè)變量函數(shù)值?

如何讓一個(gè)函數(shù)記住2個(gè)變量函數(shù)值?

躍然一笑 2023-12-05 15:49:40
我想提高遞歸計(jì)算值的性能n = 100def T(n,k):    q = 0    if n == 0 and k == 0:        return(1)        q = 1    if k>n or n<0:        return(0)        q = 1    if q != 1:        return(T(n-1,k-1)+n*T(n-1,k))for i in range(n):    for n in range(i+1):        print(T(i,n))    print("*********")但是,我只找到了使用僅接受 1 個(gè)參數(shù)的函數(shù)來(lái)執(zhí)行此操作的方法,如下所示:def mem(f):    memory = {}    def inner_function(x):        if x not in memory:                        memory[x] = f(x)            return memory[x]        else:            return memory[x]    return inner_function@memdef fibonacci(n):    if n == 1 or n == 0:        return 1    else:        return fibonacci(n-1) + fibonacci(n-2)我正在考慮做一個(gè)二維數(shù)組,但我還不知道(假設(shè)這是可能的)使用列表列表這樣做的想法會(huì)有什么幫助。
查看完整描述

2 回答

?
當(dāng)年話下

TA貢獻(xiàn)1890條經(jīng)驗(yàn) 獲得超9個(gè)贊

你可以用functools.lru_cache這個(gè)

from functools import lru_cache


@lru_cache(maxsize=32)

def T(n,k):

? ? q = 0

? ? if n == 0 and k == 0:

? ? ? ? return(1)

? ? ? ? q = 1

? ? if k>n or n<0:

? ? ? ? return(0)

? ? ? ? q = 1

? ? if q != 1:

? ? ? ? return(T(n-1,k-1)+n*T(n-1,k))

您可以使用此裝飾器來(lái)記憶函數(shù)調(diào)用,特別是使用此函數(shù),這將保存maxsize最近的調(diào)用。


請(qǐng)注意,在這種特殊情況下,由于您的陳述,絕大多數(shù)print時(shí)間實(shí)際上都花在了寫入控制臺(tái)上。如果您刪除它(但仍然保留您的T(i,n)調(diào)用),您的代碼將幾乎立即完成。


查看完整回答
反對(duì) 回復(fù) 2023-12-05
?
森欄

TA貢獻(xiàn)1810條經(jīng)驗(yàn) 獲得超5個(gè)贊

您可以輕松擴(kuò)展mem裝飾器以使用可變*args參數(shù),并在memory. 這也適用于**kwargs,但您必須將它們轉(zhuǎn)換為可哈希類型,frozenset例如tuples。當(dāng)然,為此,所有參數(shù)都必須是可散列的。


def mem(f):

    memory = {}

    def inner_function(*args):

        if args not in memory:            

            memory[args] = f(*args)

        return memory[args]

    return inner_function

用你的T功能測(cè)試過(guò),工作正常。然而,在實(shí)踐中,您可能仍然想使用functools.lru_cache.


查看完整回答
反對(duì) 回復(fù) 2023-12-05
  • 2 回答
  • 0 關(guān)注
  • 166 瀏覽
慕課專欄
更多

添加回答

舉報(bào)

0/150
提交
取消
微信客服

購(gòu)課補(bǔ)貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動(dòng)學(xué)習(xí)伙伴

公眾號(hào)

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號(hào)