2017-05-15 20 views
0

Ich habe eine einfache Funktion, die eine Zahl wie 54 bricht und die Summe dieser beiden Zahl (d. H. 9) zurückgibt. Ich studiere auch Rekursion, ich frage mich, ob der folgende Code die Kriterien erfüllt. Warum? oder Warum nicht? Wenn nicht, wie kann ich dieses einfache Problem mit dem Rekursionsparadigma lösen?So ändern Sie diese Python-Funktion zur Verwendung der Rekursion

def sumnum(n): 
    n = str(n) 
    a = [] 
    for i in n: 
     a.append(i) 
    sum(int(n) for n in a) 
sumnum(54) 
9 
+0

'def sumnum (n): return (sumnum (n // 10) + n% 10) if n else 0' – falsetru

+1

Rekursion bedeutet eine sich aufrufende Funktion. Sagt 'sumnum' sich selbst? Dies würde Ihre Frage beantworten, warum oder warum nicht Rekursion. – mkrieger1

Antwort

-1

Der von Ihnen verwendete Code ist keine Rekursion. Rekursion hat zwei Hauptmerkmale: den Basisfall und die Rekursion.

Nun lässt, brechen Sie Ihr Problem:

Base Case:

sagen, wir haben die Zahl kleiner als 10. Dann würden wir die Zahl zurück. Halten wir es als unseren Basisfall.

Rekursion:

Wenn wir eine Reihe ...xyz (x, y und z als Ziffern) hätte, würde nehmen wir die letzte Ziffer, und die letzte Ziffer der Zahl links, bis wir eine Reihe kleiner als 10.

Code:

def sumnum (n): 
    if n < 10: 
     return n 
    return n % 10 + sumnum(n // 10) 
+0

Beachten Sie die clevere Verwendung der Rekursion innerhalb Ihrer Erklärung der Rekursion ... – mkrieger1

+0

@ mkrieger1 beabsichtigt, in der Tat – Uriel

+1

Ich würde gerne den Grund für den Downvote wissen, so kann ich die Antwort – Uriel

Verwandte Themen