본문 바로가기

카테고리 없음

[재귀함수 기본] 60부터 0까지 정수만 세는 방법

보신각 카운트 다운  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까지 출력됨을 알 수 있다.