Python 에서의 재귀 함수

PythonBeginner
지금 연습하기

소개

마법과 수학적 구조의 진보된 사용으로 유명한 위대한 제국, Pythonesia 의 신화적인 영역에 오신 것을 환영합니다. 제국의 왕실 경호대장으로서, 당신은 제국이 가장 소중히 여기는 유물인 재귀 결정체 (The Recursive Crystal) 를 방어하는 임무를 맡았습니다. 전설에 따르면, 이 결정체는 무한한 에너지원을 생성하기 위해 자체 내에서 반복되는 고대 코드를 사용하여 제작되었다고 합니다. 이 유물을 더 잘 이해하고 보호하기 위해, 당신은 Python 에서 재귀 (recursion) 의 기술, 즉 그것을 만드는 데 사용된 바로 그 기술을 마스터해야 합니다.

당신의 목표는 재귀의 힘을 사용하여 기존의 방법으로는 쉽게 해결할 수 없는 복잡한 문제를 해결하는 것입니다. 그렇게 함으로써, 당신은 제국의 부와 지식을 오용하려는 자들로부터 안전을 보장할 것입니다. 재귀 함수의 미스터리를 풀면서 시간과 코드를 넘나드는 여정을 시작할 준비를 하십시오.

재귀 이해하기

이 단계에서는 재귀의 기본 개념과 Python 에서 이를 구현하는 방법을 배우게 됩니다. 재귀 함수 (recursive function) 는 문제를 해결하기 위해 자기 자신을 호출하는 함수입니다. 재귀 함수를 설계하는 핵심은 재귀를 멈추는 조건인 기본 사례 (base case) 와 함수가 자기 자신을 호출하는 재귀 사례 (recursive case) 를 갖도록 하는 것입니다.

숫자의 팩토리얼 (factorial) 을 계산하는 간단한 재귀 함수를 만들어 보겠습니다. 숫자 n의 팩토리얼은 n보다 작거나 같은 모든 양의 정수의 곱입니다.

선호하는 텍스트 편집기에서 ~/project/factorial.py를 열고 다음 코드를 추가하십시오.

def factorial(n):
    if n == 0:  ## Base case
        return 1
    else:        ## Recursive case
        return n * factorial(n - 1)

## Example usage
print(factorial(5))

코드를 실행하려면 다음 명령을 사용하십시오.

python3 factorial.py

예상 결과는 120입니다. 5! = 5 * 4 * 3 * 2 * 1 = 120이기 때문입니다.

여러 기본 사례를 사용한 재귀

다음으로, 여러 기본 사례 (base case) 를 가진 재귀 함수를 구성하는 방법을 배우게 됩니다. fibonacci.py라는 파일에 fibonacci 함수를 만들어 n번째 숫자까지의 피보나치 수열을 계산해 보겠습니다. 피보나치 수열은 0 과 1 에서 시작하여 각 숫자가 이전 두 숫자의 합인 일련의 숫자입니다.

~/project/fibonacci.py에 다음 코드를 입력하십시오.

def fibonacci(n):
    if n == 0:  ## First base case
        return 0
    elif n == 1:  ## Second base case
        return 1
    else:         ## Recursive case
        return fibonacci(n - 1) + fibonacci(n - 2)

## Example usage
print(fibonacci(10))

다음 명령으로 코드를 실행합니다.

python3 fibonacci.py

예상 출력은 피보나치 수열의 10 번째 숫자이므로 55여야 합니다.

요약

이 랩에서는 두 가지 다른 수학적 수열에 재귀를 적용하여 Python 에서 재귀의 개념을 탐구했습니다. 설계 사고 과정은 재귀 학습을 재미있고 관련성 있게 만드는 흥미로운 스토리라인을 만드는 데 중점을 두었습니다. 작업은 팩토리얼의 더 간단한 단일 기본 사례에서 피보나치 수열의 여러 기본 사례가 있는 약간 복잡한 시나리오로 스캐폴딩되어 포괄적인 이해를 보장했습니다.

랩이 끝날 때까지 재귀 함수를 작성하는 데 능숙해졌을 뿐만 아니라 기본 사례의 중요성과 재귀 호출 뒤의 메커니즘을 흡수했습니다. 이제 신화적인 Pythonesia 의 재귀 크리스탈만큼이나 가치 있는 기술인 재귀 알고리즘을 사용하여 실제 문제를 해결하는 열쇠를 갖게 되었습니다.