https://www.acmicpc.net/problem/13241
a, b = map(int, input().split())
def gcd(num1, num2):
if(num2 > num1):
temp = num2
num2 = num1
num1 = temp
if(num1 % num2 == 0):
return num2
else:
temp = num2
num2 = num1 % num2
num1 = temp
return gcd(num1, num2)
print(int(a * b / gcd(a, b)))
재귀호출을 사용하기 위해 16번째 줄에 return을 빼고 gcd(num1, num2)이라고 적었다. 실행했을 때 자꾸 10번째 줄에서 None 값이 리턴되길래 왜 그런가 했더니 파이썬은 return을 적지 않으면 기본적으로 None 값을 반환한다고 한다. 2번째 if문에는 리턴값이 있었으나 else 문에 리턴이 없어 생긴 문제라는 답변을 받았다. 재귀호출을 할 때에는 return을 쓰면 안 되는 줄 알았는데, 재귀함수에서는 return을 만나지 않으면 함수가 끝까지 실행된다고 한다. 예문을 확인해보고 좀 더 공부를 해봐야겠다.
유클리드 호제법
재귀함수의 호출, 리턴