2017-01-26 3 views
0

아주 바보 같은 질문의 마지막에있는 "반환"하지만 ... 누락기능 파이썬

def gcd(a, b): 
    if a < b: 
     a, b = b, a 
    if a == 0: 
     return b 
    elif b == 0: 
     return a 
    return gcd(b, a % b) 

그래서 함수의 끝에 더 return을가 없을 때 왜 코드를 반환 None을 것? 재귀 적으로 호출 될 때 a 또는 b은 결국 0과 같으며 if 조건을 만족합니까? 그런 다음 0이 아닌 값을 반환해야합니다.

+0

중간 단계는 값을 반환하지 않습니다. – Max

+0

이 함수는 절대로'None'을 반환해서는 안됩니다. 'a'와'b'의 가치는 무엇입니까? – DyZ

+2

@DYZ 위에서 쓴 함수는 None을 반환하지 않을 것이다. 그러나 나는 그가 마지막 반환을 생략했을 때 (그의 마지막 줄을 간단히'gcd (b, a % b)'로 만든다.) _then_는'None'을 리턴한다. 그는 이유를 묻고 있습니다. – Dan

답변

3

a도 아니고 b도 0이 아니면 처음 두 개의 return 문 중 어느 것도 실행되지 않습니다.

최종 반환 값이 없으면 컨트롤의 흐름이 return 문을 내지 않고 함수의 끝에 도달하므로 default value of None이 반환됩니다.