파이썬 재귀 예제

파이썬에는 목록의 합계 함수가 포함되어 있습니다. 기본 파이썬 구현인 CPython은 C에서 무기한 루프를 사용하여 해당 함수를 만듭니다(관심 있는 사람들을 위한 소스 코드). 재귀로 수행하는 방법을 살펴보겠습니다: 또한 Python의 가변 형 데이터 구조는 구조 공유를 지원하지 않으므로 변경할 수없는 데이터 구조처럼 처리하면 공간 및 GC (가비지 수집) 효율성에 부정적인 영향을 미칩니다. 결국 불필요하게 많은 가변 가능한 개체를 복사합니다. 예를 들어 이 패턴을 사용하여 목록을 분해하고 다시 저주했습니다. 모든 재귀 함수는 기본 케이스와 재귀 케이스의 두 부분으로 구성된 공통 구조를 공유합니다. 함수가 `hi`를 인쇄한 후 0에 도달할 때까지 남은 값이 더 낮은 값으로 자신을 호출합니다. 함수가 0이면 hi_recursive(1)에서 호출된 지점으로 반환되며 hi_recursive(2)에서 호출된 곳으로 반환되고 궁극적으로 hi_recursive(3)에서 호출된 곳으로 돌아갑니다. 나는 동료 파이썬 스타스 (Pythonistas)로서 우리는 모두 여기에 성인을 동의하지만, 아이들은 재귀의 아름다움을 더 잘 괴롭히는 것 같습니다. 그래서 잠시 여기 성인이 되지 않고 우리가 산타 클로스를 돕기 위해 재귀를 사용할 수있는 방법에 대해 이야기하자.

함께, 우리는 재귀 함수 및 재귀 데이터 구조와 같은 개념을 마스터하여 파이썬 프로그램에서 재귀작업하는 방법을 배웁니다. 또한 재귀 중에 상태를 유지하고 결과를 캐싱하여 재계산을 방지하는 것에 대해서도 이야기합니다. 이것은 많은 재미가 될 것입니다. 앞으로 그리고 위쪽으로! 위의 재귀 함수는 아래와 같이 호출할 수 있습니다. 스택에서 재귀 함수를 나타내기 위해서는 이 표현이 필요하기 때문에 이 트리와 같은 표현을 먼저 보았습니다. 당신은 지금 볼 수 있습니다. 파이썬 (많은 언어와 마찬가지로)은 일종의 스택을 유지합니다. 그것은 대신 접시의 스택 기능 호출의 스택입니다. 위의 코드 조각은 특정 프로그래밍 언어를 따르지 않습니다. 여기서 주요 의도는 재귀 함수의 예를 보여주는 것입니다.) 재귀 데이터 구조와 재귀 기능은 빵과 버터처럼 함께 이동합니다.

재귀 함수의 구조는 종종 입력으로 걸리는 재귀 데이터 구조의 정의 후 모델링될 수 있습니다. 목록의 모든 요소의 합계를 재귀적으로 계산하여 설명하겠습니다 : 단순히 sum 함수를 호출하면 함수가 변수 합계에 모든 요소를 추가하고 반환합니다. 이 작업을 재귀적으로 수행하려면 DataCamp는 파이썬의 근시 분석에 대한 훌륭한 기사를 가지고 있으며이 섹션을 읽기 전에 확인하는 것이 좋습니다. 함수의 공간 및 시간 분석(공간 복잡성 및 시간 복잡성이라고도 함)의 의미를 빠르게 요약해 보겠습니다. 방문_페이지는 한 번 인스턴스화한 다음 모든 재귀 호출에 전달됩니다. 그것은 모든 스택 프레임에 존재한다. 실제 파이썬 코멘트 정책 : 가장 유용한 의견은 전체 기사와 모든 이전 주석을 읽은 후 다른 독자를 배우거나 돕는 것을 목표로 작성된 의견입니다.