2017-05-20 5 views
-4

Angenommen, ich hätte eine Funktion max_multiples (list, m) Die Liste ist eine nicht leere Liste, wie würde ich die größte Zahl in der Liste, das ist ein Vielfaches von m?Berechnen und gibt den größten Wert zurück, der ein Vielfaches (m) in der Liste ist - Rekursiv

eine rekursive Funktion Mit

+5

Was haben Sie bisher versuchen? –

+1

Wenn Sie wissen, wie man überprüft, ob eine Nummer ein Vielfaches einer anderen Nummer ist, sind Sie bereits halbwegs da. Dann, wenn Sie wissen, wie man das Maximum in einer Liste von Zahlen findet, sind Sie 2/3 dort. Schließlich, wenn Sie das letztere rekursiv tun können, sind Sie fertig. – ForceBru

+0

Schauen Sie sich die Antwort @ Jérôme hat mir gegeben. Ich habe etwas ähnliches getan, aber bekomme Fehler, weil ich keine Schleifen verwenden kann –

Antwort

1

Ich denke, dies ist eine Art von Übung ist, und @ ForceBru Kommentar führt Sie den richtigen Weg.

Für die Aufzeichnung ist dies nicht rekursiv, aber so würde ich es im wirklichen Leben tun.

def max_multiples(input_list, m): 
    multiples = [n for n in input_list if not n % m] 
    if multiples: 
     return max(multiples) 
    else: 
     return None 

max_multiples([5, 9, 16, 8, 6], 3) 
# 9 

max_multiples([5, 9, 16, 8, 6], 45) 
# None 

Von Python 3.4 auf, kann es auf diese Weise geschrieben werden:

def max_multiples(input_list, m): 
    max([n for n in input_list if not n % m], default=None) 
+0

Hey Ich habe tatsächlich etwas ähnliches versucht, aber ich kann keine Schleifen verwenden oder ich bekomme einen Fehler –

+0

Dann ist es eine gute Sache, dass keiner dieser Code irgendwelche Schleifen hat. Was versuchst du mit deiner Bemerkung zu vermitteln? Und was ist die vollständige Rückverfolgung des Fehlers? –

+0

Oh ich habe gerade angenommen, es war die for-Schleife oder so. Es ist auf einem Programm für die Schule und es sagt nur "versteckte Tests fehlgeschlagen" –

Verwandte Themen