두 정수의 가장 큰 공약수를 계산하는 간단한 파이썬 코드를 작성하려고합니다.유클리드 알고리즘의 파이썬 코드의 이상한 버그
def gcd(a,b):
if (b==0):
return a
gcd(b,a%b)
이 간단한 코드는 유클리드 알고리즘을 사용합니다. 문제는 b가 0이 될 때를 제외하고는 리턴되지 않는다는 것입니다. 이 버그의 출처는 무엇입니까?
두 정수의 가장 큰 공약수를 계산하는 간단한 파이썬 코드를 작성하려고합니다.유클리드 알고리즘의 파이썬 코드의 이상한 버그
def gcd(a,b):
if (b==0):
return a
gcd(b,a%b)
이 간단한 코드는 유클리드 알고리즘을 사용합니다. 문제는 b가 0이 될 때를 제외하고는 리턴되지 않는다는 것입니다. 이 버그의 출처는 무엇입니까?
당신은 함수 호출을 반환해야합니다 :
def gcd(a,b):
if (b==0):
return a
return gcd(b,a%b)
것은 물론 재귀 호출에서 반환을 추가합니다.
def gcd(a,b):
if (b==0):
return a
return gcd(b,a%b)
코드에서 재귀 호출의 반환 값을 반환하지 않습니다.
def gcd(a,b):
if (b==0):
return a
return gcd(b,a%b)
이렇게하면됩니다.
코드를 포맷 할 수 있습니까? – wanderlust
* b가 0 인 경우를 제외하고는 반환되지 않습니다. * b == 0 블록에 return 문이 있고 나머지 함수가 충분히 알려주지 않는다는 사실 –
각 재귀 함수 호출에 return statement? – quark