1

Ich schrieb einen Code, der die GCD von zwei Zahlen berechnet. Der gcd von (24,12) ist 12. Die Funktion compute_gcd berechnet den GCD und gibt ihn zurück, was in der Hauptfunktion ausgedruckt wird. Die Ausgabe ist jedoch none, wenn ich es zur Hauptfunktion zurückgebe und es 12 ist, wenn ich es in der compute_gcd Funktion selbst drucke.Arbeiten mit der Berechnung GCD - Python-Funktion zurück

Wohin gehe ich bei der Rückgabe des GCD falsch?

def compute_gcd(a,b): 
    if(b==0): 
     return a    # Prints 12 if I replace with print a 
    else: 
     compute_gcd(b,a%b) 

def main(): 
    a=24 
    b=12 
    print compute_gcd(a,b) # Prints none 

main() 
+0

keine Rückkehr in 'else' Teil –

+2

Mögliche Duplikat eines return in der else Aussage zu tun haben [I 'True' erwarten würde, aber bekommen 'None'] (http : //stackoverflow.com/questions/15210646/i-expect-true- but-get-none) –

Antwort

4

Sie haben vergessen, eine return im else Zweig zu setzen. Dies funktioniert:

def compute_gcd(a,b): 
    if b == 0: 
     return a 
    else: 
     return compute_gcd(b,a%b) 

def main(): 
    a=24 
    b=12 

    print compute_gcd(a,b) # Prints 12 

main() 
-2

Ihr anderer Zustand hat keine Rückkehr, daher gibt es keine Ausgabe. Wenn Sie ändern, dass zu

else: 
    return compute_gcd(b,a%b) 

Sie 12 bekommen.

+2

Wie unterscheidet sich das von der Antwort, die vor 13 Minuten veröffentlicht wurde? – DeepSpace

+0

Ich habe es nicht gesehen, da die Antwort-Registerkarte geöffnet war. Downvotes, Hölle ja. –

0

versuchen, diese ... Sie

def compute_gcd(a,b): 
    if(b==0): 
     return a 
    else: 
     return compute_gcd(b,a%b) 

def main(): 
    a = 24 
    b = 12 

    print(compute_gcd(a,b)) 

main()