Ich verwende eine rekursive Funktion auf einer Liste von Listen mit einem Akkumulator, aber anstatt die richtige Liste von Listen zu erstellen, erstellt es eine Liste mit Duplikaten des letzten Eintrags in den Akkumulator eingefügt . Ich habe das Problem in einer viel einfacheren rekursiven Funktion und Liste neu erstellt. Diese Funktion nimmt eine Liste von Listen und erstellt 2 Kopien und kehrt sie n-mal um.Rekursive Funktion in Python ändert sich nicht Liste
def recursauto(x, n, instSet):
#Base Case
if(n==0):
instSet.append(x)
print(x) #Print to see what SHOULD be added
else:
temp = [x]*(2) # Make a list with 2 copies of the original list
for i in range(len(temp)):
temp[i][i] = temp[i][i][::-1] # Make the list backwards
for i in range(2):
recursauto(temp[i], n-1, instSet) #Input each element
MyList = [] #Empyt list for accumulator
print("Correct output:")
recursauto([["A", "l", "e", "x"], ["A", "b", "d", "a", "l", "a", "h"]], 2, MyList)
print("Wrong printed list:")
for i in MyList:
print(i) #Print what is in the accumulator
Die Ausgabe kommt falsch und der Akku hat nicht die richtigen Dinge, die hineingesteckt wurden.
Ich weiß, dass es eine einfachere Möglichkeit gibt, dies zu tun, aber die Funktion, die ich tatsächlich mache, erfordert Rekursion. Wie ich schon sagte, dies ist nur eine vereinfachte Nachbildung des Problems, das ich habe.
Was wäre die richtige Ausgabe? – Lando
Der korrekte Ausgang ist die Liste, die in den Akkumulator geht. Dies ist das Gleiche wie das, was vor der Zeile "Falsche gedruckte Liste:" in der Ausgabe gedruckt wird. –
Was ist der Zweck der rekursiven Funktion? –