1

2つの数字のGCDを計算するコードを書きました。 (24,12)のgcdは12です。関数compute_gcdはGCDを計算し、それをメイン関数で出力します。しかし、出力はcompute_gcd関数でそれを出力すると、私はmain関数に返すとnoneとなり、それは12です。GCDを計算する - Python関数return

ここでGCDを返す間に私は間違っていますか?

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

else'一部 'ノーリターンで –

+2

の可能性のある重複した[Iが「本当」期待するが、取得「なし」](HTTP内returnをしなければならない...これを試してみてください://stackoverflow.com/questions/15210646/i-expect-true-but-get-none) –

答えて

4

あなたはelseブランチにreturnを入れるのを忘れていました。これは動作します:

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

あなたのelse条件は返されず、出力はありません。それを変更した場合

else: 
    return compute_gcd(b,a%b) 

12が表示されます。

+2

これは、13分前に投稿された回答とどのように違いますか? – DeepSpace

+0

回答タブが開いているので、私はそれを見ませんでした。下降、地獄はい。 –

0

あなたはelse声明

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() 
関連する問題