2017-03-22 7 views
-1

Ich implementiere eine rekursive Version der maximal steigenden Subsequenz, aber ich denke, dass ich auch Parameter verwende.Wie kann ich die Anzahl der Parameter reduzieren?

Strategie:

  • Liste von Elementen (Integer)

  • Liste der Längen (max Länge von Teilfolge)

  • Referenzliste (Element, das ich gehen sollte das finden nächstes Element in der Unterfolge)

Imp lementation:

def search(i,j,elements,references,leng,temp): 
    if i == len(elements): 
     return references,leng 

    if j < 0: 
     return search(i+1,i,elements,references,leng,0) 

    if temp < leng[j] and elements[i] > elements[j]: 

     leng[i] = leng[j] + 1 
     references[i] = j 
     temp = leng[j] 

    return search(i,j-1,elements,references,leng,temp) 

Erster Aufruf:

leng = [1]*len(elements) 
references = [-1]*len(elements) 

references,leng = search(0,0,elements,references,leng,0) 

Es wäre sehr hilfreich, wenn Sie mir erklären kann, wie ich die Anzahl der Parameter zu reduzieren.

Danke.

+0

Setzen Sie die Parameter in einer Liste übergeben können. Jetzt haben Sie nur einen Parameter: P – ForceBru

+0

Stellen Sie sicher, dass Sie Ihren Eindruck genau reproduzieren, wenn Sie Python-Code veröffentlichen. Andernfalls führen Sie neue Fehler in den Code ein. – khelwood

+0

@ForceBru Das Übergeben von veränderbaren Objekten kann jedoch zu anderen Problemen führen. –

Antwort

1

Sie können auch tun es auf diese Weise:

def search(**parameters): 
    # unpack the dictonary 
    a = parameters['a'] 

dictonary = {'a': 0} 
foo = search(dictonary) 

Sie jetzt ein Wörterbuch mit den Parametern und ordnen sie in der Funktion

Verwandte Themen