파이썬 재귀함수 예제

우리는 쉽게 재귀를 사용하여 모든 긍정적 인 정수에 대한 피보나치 동등한 결정하기 위해 파이썬의 함수를 코딩 할 수 있습니다 : 동일한 문제의 간단한 인스턴스로 원래의 문제를 분해. 이것은 재귀 케이스입니다: 이제 재귀 부품에 대한 것입니다. root_path의 디렉터리에는 파일만 포함되어 있다고 가정했습니다. 이제 자식 디렉터리를 허용하여 이러한 가정을 수정해 보겠습니다. 재귀 기능을 작성하기위한 두 가지 핵심 성분을 기억하십니까? 각 재귀 호출(예: 업데이트된 현재 상태를 각 재귀 호출에 인수로 전달하는 경우)을 통해 스레딩하는 방법은 다음과 같습니다. 자체의 인스턴스 – 예를 들어, 음식의 큰 조각의 작은 물기를 복용. 인쇄 문 후 hi_recursive를 다시 호출하지만 나머지 값이 줄어듭니다. 이것은 중요합니다! 남은 값을 줄이지 않으면 함수가 무기한 실행됩니다. 일반적으로 재귀 함수가 자체적으로 호출하면 매개 변수가 기본 케이스에 더 가깝게 변경됩니다. 이제 재귀 함수의 몇 가지 기본 을 살펴보겠습니다. 단순히 sum 함수를 호출하는 경우 함수는 변수 합계에 모든 요소를 추가하고 반환합니다. 재귀적으로 이 작업을 수행하려면 재귀는 자체를 반복적으로 호출하여 큰 작업을 더 작은 작업으로 나누도록 합니다. 재귀 함수에는 실행을 중지하는 기본 케이스와 기본 케이스에 대한 함수로 점진적으로 연결되는 호출이 필요합니다.

나무에서 일반적으로 사용되지만 다른 함수는 재귀로 작성하여 우아한 솔루션을 제공할 수 있습니다. 트리와 스택을 사용하여 메모리에 간단한 재귀 함수를 나타내는 방법을 보았습니다. 이제 재귀 추적 방법을 볼 수 있습니다. 이것은 재귀 알고리즘의 일반적인 구조입니다. 현재 문제가 간단한 경우를 나타내는 경우 해결합니다. 그렇지 않은 경우 하위 문제로 나누고 동일한 전략을 적용합니다. 무대 뒤에서 각 재귀 호출은 기본 케이스에 도달할 때까지 호출 스택에 스택 프레임(실행 컨텍스트 포함)을 추가합니다. 그런 다음 각 호출이 결과를 반환할 때 스택이 해제되기 시작합니다.

일부 링크는 다른 링크보다 더 가치가 있기 때문에 더 복잡한 알고리즘은 그래프의 가장자리에 “가중치”를 추가합니다. 예를 들어 D의 링크는 B보다 인기가 높기 때문에 B의 링크보다 가치가 있습니다. 기본 케이스는 빈 목록입니다 – 가장 좋은 합계는 0입니다. 기본 케이스를 처리하면 목록의 마지막 항목을 제거합니다. 마지막으로 sum_recursive 함수를 감소된 목록으로 호출하고 합계에 뽑아낸 숫자를 추가합니다. 인라인 주석은 위의 예제를 의미있게 만들어야 합니다. 혼란의 한 가지 가능한 포인트는 목록 이해의 사용이다. 당신은 루프 압축으로 생각할 수 있습니다. 코드를 훨씬 간결하게 만드는 데 사용할 수 있습니다. 스택에서 재귀 함수를 나타내기 위해서는 이 표현이 필요하기 때문에 이 트리와 같은 표현을 먼저 보았습니다.

カテゴリー: 未分類 パーマリンク