2012-01-11 4 views
2

이 파이썬 3 코드는 명확하게 그것이 12를 반환해야 할 때 나를 위해 아무 것도 반환하지 않습니다. 나는 그것을 이해할 수 없습니다.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

난 당신이 연습으로이 일을하고 있다면 모르겠지만, fractions''에서 GCD 함수는 이미 거기에 : http://docs.python.org/py3k/library/fractions.html#fractions.gcd –

답변

4

변경 라인

gcd(n,m//n) 

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

알겠습니다. 감사합니다. 나는 어떤 종류의 설명을 얻을 수 있나? 왜 그걸 돌려 주겠습니까? – Jpy

+0

return을 명시 적으로 말하지 않으면이 함수는 없음을 반환합니다. gcd (n, m // n)를 호출하고 평가하는 것은 아무 것도하지 않습니다. (아마도 R이나 함수형 프로그래밍의 배경이 있습니까?) –

+4

@Jpy : 'm'대신'return m '이라고 쓰는 것과 같은 이유로,'return gcd (...)'대신에'return gcd 그냥'gcd (...)' –

관련 문제