Münzwechsel auswendig lernen

Ich möchte meine Münztauschfunktion in eine gespeicherte Funktion umwandeln
Um dies zu tun, entschied ich mich, ein Wörterbuch zu verwenden, damit ein Schlüssel in meinem Diktat die Münze ist und der Wert eine Liste ist, die alle Münzen enthält, die die "Schlüssel" -Münze ändern können.
was ich getan habe ist:

def change(a,kinds=(50,20,10,5,1)):
    if(a==0):
            return 1
    if(a<0 or len(kinds)==0):
            return 0

    return change(a-kinds[0],kinds)+change(a,kinds[1:])


def memoizeChange(f):
    cache={}
    def memo(a,kinds=(50,20,10,5,1)):

        if len(cache)>0 and kinds in cache[a]:
            return 1
        else:
            if(f(a,kinds)==1):
                cache[a]=kinds // or maybe cache[a].append(..)
                return cache[a]+memo(a-kinds[0],kinds)+memo(a,kinds[1:])
    return memo

memC=memoizeChange(change)
kinds=(50,20,10,5,1)
print(memC(10,kinds))

Ich würde gerne ein paar Vorschläge bekommen, oder vielleicht gibt es einen anderen Weg, das zu tun.
Vielen Dank.


BEARBEITEN
Auswendig gelernt:

def change(a,kinds=(50,20,10,5,1)):
    if(a==0):
            return 1
    if(a<0 or len(kinds)==0):
            return 0
    return change(a-kinds[0],kinds)+change(a,kinds[1:])


def memoizeChange(f):
    cache={}
    def memo(a,kinds=(50,20,10,5,1)):
        if not (a,kinds) in cache:
                cache[(a,kinds)]=f(a,kinds)
        return cache[(a,kinds)]
    return memo

change=memoizeChange(change)
print(change(10))

Antworten auf die Frage(2)

Ihre Antwort auf die Frage