2012-01-11 17 views
2

このpython 3コードは、明らかに返されるべきときに私にとってはNoneを返しています。私はそれを理解できません。Python 3関数が返されます。なしGCDとユークリッド

from math import * 

def gcd(m,n): 

    print("gcd: ",m,", ",n,")") 

    if n == 0: 
     print(m) 
     return m 
    else: 
     gcd(n,m//n) 

def main(): 

    m = 60 
    n = 24 
    result = gcd(m,n) 
    print(result) 

main() 
+0

gcd(n,m//n) 

: http://docs.python.org/py3k/library/fractions.html#fractions.gcd –

答えて

4

変更するには、練習としてこれをやっている場合、私は知らないが、GCD関数はfractions` `にすでにありますライン

return gcd(n,m//n) 
+0

よろしくお願いいたします。私は何らかの説明をすることができますか?なぜあなたはそれを返すと思いますか? – Jpy

+0

明示的にreturnを指定しないと、関数はNoneを返します。 gcd(n、m // n)を呼び出して評価するだけでは何もしません。 –

+4

@Jpy: 'm'の代わりに' return m'を書いたのと同じ理由で、 'return gcd(...)'を書くのではなく、 'return gcd(...)'を書くのと同じ理由で、Rのバックグラウンドを持っていますか?ちょうど 'gcd(...)' –

関連する問題