Ich habe eine Liste von ganzen Zahlen größer als Null. Ich muss den mit der höchsten Anzahl an Teilern identifizieren. Dafür habe ich zwei Funktionen erstellt: eine, die mir alle Teiler aller Elemente einer Liste gibt, und eine andere, die herausfiltert, welches Element mehr Teiler hat. Das Problem ist, dass ich die maisDivisores-Funktion nicht direkt eine Liste von nur den Elementen erhalten kann (ohne Teiler), weißt du? Wenn ich die Funktion 1 (listaDivisores) innerhalb der Funktion 2 (maisDivisores) aufrufen stürzt immer ab. Wenn ich jedoch manuell anrufe, funktioniert es gut. Ich habe alle Möglichkeiten und nichts ausprobiert. Wie rufe ich die erste Funktion in der Sekunde auf, damit die Bruttoliste funktioniert?Rekursive Funktionsaufruf - Python
def listaDivisores(lista):
if lista == []:
return []
else:
lista=qs(lista)
resultado=[]
resultado.append((lista[0],[y for y in range(1,((lista[0])+1)) if (int(lista[0]))%y==0]))
return resultado+listaDivisores(lista[1:])
return listaDivisores(lista)
def maisDivisores(lista):
if len(lista)==[]:
return "Nenhum número."
else:
**lista=listaDivisores(lista)**
if int(len(lista))==1:
return lista[0]
elif int(len(lista[0][1]))<int(len(lista[1][1])):
lista.pop(0)
elif int(len(lista[0][1]))==int(len(lista[1][1])):
if lista[0]<lista[1]:
lista.pop(0)
else:
lista.pop(1)
else:
lista.pop(1)
return maisDivisores(lista)
return lista
functions working separately; error log when working together.
keinen Grund Rekursion zu verwenden ?? – Copperfield
SORTIERT !! Löscht die erste Funktion. Ich habe eins gemacht. Daher habe ich ... die grobe Liste hat das erste Element auf eine destruktive Weise gefangen. Mit dem Verständnis der Liste, erstellen Sie eine Liste von Teilern es, wenn die Liste von leer ist, geben Sie die neue Funktion, um alle Elemente zu erhalten, dann wird sie mir eine Liste der Teiler von allen geben. dann können Sie vergleichen und mir das Element zurückgeben, das die größte Anzahl von Teilern hat. –
Recursion fordert den Lehrer auf, das Problem zu lösen. –