본문 바로가기
Study (Data Science)/Python

Unit 31. 재귀호출 (recursive call)

by 콜라찡 2022. 11. 29.

재귀호출

함수 나 자신 안에 나를 또 호출하는 방법.

그럼 또 함수가 돌아가고 또 그 함수가 돌아가고 무한 loop.

다행히 파이썬은 1000번까지 반복이 가능해서 멈추기는 하지만,

꼭 빠져나오는 코드를 작성해줘야 함.

 

언제쓸까?

어떤 연산을 한 그 값으로 또 같은 연산을 해야할 때가 있다.

그 때 사용하면 된다.

 

어떻게쓸까?

먼저 제일 마지막에 빠져나올때의 조건문부터 작성하고,

그 뒤에 변환식을 넣어주자.

n (차수) 의 변화가 어떻게 되는지를 잘 살필 것.

def hello(count):
    if count == 0:    # 종료 조건을 만듦. count가 0이면 다시 hello 함수를 호출하지 않고 끝냄
        return
    
    print('Hello, world!', count)
    
    count -= 1      # count를 1 감소시킨 뒤
    hello(count)    # 다시 hello에 넣음
 
hello(5)    # hello 함수 호출

실행 결과

Hello, world! 5
Hello, world! 4
Hello, world! 3
Hello, world! 2
Hello, world! 1

대표적인 예로 factorial 이 있음 

수학시간에 배웠던 기억이 남... 다행이다

def factorial(n):
    if n == 1:      # n이 1일 때
        return 1    # 1을 반환하고 재귀호출을 끝냄
    return n * factorial(n - 1)    # n과 factorial 함수에 n - 1을 넣어서 반환된 값을 곱함
 
print(factorial(5))

 

728x90

댓글