보신각 카운트 다운 60부터 0까지 세는 함수를 만들고 싶다.
def count_down(number):
print(number) # number를 출력하고
if number < 0;
count_down(number - 1) # count_down 함수를 number - 1 인자를 주고 다시 호출한다!
count_down(60)
실행 결과는 다음과 같이 60부터 시작해서 0까지 잘 출력 하지만 그 이후로 -1 -2 ... 무한정 1씩 깎이고 있다.
그래서 재귀함수에서는 탈출조건이 어떻게 될지 고민하는 것이 매우 중요하다.
0까지만 출력하고 싶기 때문에 number가 0보다 작으면 그만하도록 해야한다.
def count_down(number):
print(number) # number를 출력하고
if number < 0:
return
count_down(number - 1) # count_down 함수를 number - 1 인자를 주고 다시 호출한다!
count_down(60)
이렇게 if number < 0:
return을 써주면 프린트 아래에서 조건이 종료하기 때문에
0을 출력 한 이후에 루프를 한번 더 돌아 -1이 찍히고 종료 됨을 알 수 있다.
이 것을 고치려면 if number < 0:에서 if number-1 < 0:으로 바꿔주거나 if number < 1:로 바꿔주거나
아래 그림 처럼 if cumber <0:
return 값을 print(number)위로 올려주면 된다.
이러면 0보다 작아지는 순간 종료하고 그다음 출력하기 때문에 정상적으로 0까지 출력됨을 알 수 있다.