31. 재귀호출

Joy·2020년 3월 11일
0

31.

재귀호출

재귀호출(recursive call): 함수 안에서 함수 자기자신을 호출하는 방식

재귀호출 만들기

def hello():
    print('Hello, world!')
    hello()
 
hello()

hello 함수가 자기자신을 계속 호출하다가 최대 재귀 깊이를 초과하면 RecursionError가 발생 : 최대 재귀 깊이(maximum recursion depth)가 1,000으로 정해져 있어서

재귀호출에 종료조건 만들기

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

재귀호출로 팩토리얼 구하기

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

문제: 재귀호출로 피보나치 수 구하기

표준 입력으로 정수 한 개가 입력됩니다(입력 값의 범위는 10~30). 다음 소스 코드를 완성하여 입력된 정수에 해당하는 피보나치 수가 출력되게 만드세요.
피보나치 수는 0과 1로 시작하며, 다음 번 피보나치 수는 바로 앞의 두 피보나치 수의 합입니다.

def fib(i):
    if i == 2 or i == 1:
        return 1
    return fib(i-1)+fib(i-2)


n = int(input())
print(fib(n))
profile
roundy

0개의 댓글