Menu

recursive 예제

  • Uncategorized

재귀의 몇 가지 좋은 예는 함수형 프로그래밍 언어에서 찾을 수 있습니다. 함수형 프로그래밍 언어(Erlang, 하스켈, ML/OCaml/F#등)에서는 목록 처리 사용 재귀가 있는 것이 매우 일반적입니다. 재귀 알고리즘은 반복되는 함수 호출 및 반환의 오버헤드로 인해 작은 데이터에 비효율적입니다. 이러한 이유로 재귀 알고리즘의 효율적인 구현은 종종 재귀 알고리즘으로 시작하지만 입력이 작아지면 다른 알고리즘으로 전환됩니다. 중요한 예는 데이터가 타일병합 병합 정렬에서와 같이 충분히 작을 때 비재귀 삽입 정렬로 전환하여 구현되는 병합 정렬입니다. 하이브리드 재귀 알고리즘은 종종 팀정렬에서와 같이 하이브리드 병합 정렬/삽입 정렬에서 파생된 것처럼 더 구체화될 수 있습니다. “재귀 알고리즘은 근본적인 문제 나 처리 할 데이터가 재귀 용어로 정의 될 때 특히 적합합니다.” [9] 다중 재귀는 때때로 단일 재귀로 변환될 수 있습니다(원하는 경우 반복으로 변환). 예를 들어 Fibonacci 시퀀스를 순진하게 계산하는 것은 여러 반복이지만 각 값에는 두 개의 이전 값이 필요하므로 두 개의 연속값을 매개 변수로 전달하여 단일 재귀로 계산할 수 있습니다. 이것은 더 자연스럽게 코어커션으로 구성되며, 초기 값에서 구축되고, 각 단계의 연속적인 값에서 추적됩니다. 보다 정교한 예제는 여러 번의 재귀가 아닌 반복적인 트리 순회를 허용하는 스레드된 이진 트리를 사용하는 것입니다. 나는 이것이 p5 라이브러리에 대한 튜토리얼이 아니라는 것을 명확히해야한다. 그것은 p5.js로 재귀적으로 그려진 나무의 데모입니다.

처리 재단의 다니엘 시프만(Daniel Shiffman)은 프로세싱 및 p5.js를 위한 튜토리얼, 예제 및 라이브러리를 개발합니다. 그는 또한 유튜브에서 매우 활동적입니다. 단일 자체 참조만 포함하는 재귀는 단일 재귀라고 하며 여러 자체 참조를 포함하는 재귀는 다중 재귀라고 합니다. 단일 재귀의 표준 예는 선형 검색과 같은 목록 통과를 포함하거나 요인 함수를 계산하는 반면, 다중 재귀의 표준 예는 깊이 우선 검색과 같은 트리 순회를 포함합니다. 재귀 함수는 프로그래머가 최소한의 코드를 사용하여 효율적인 프로그램을 작성할 수 있기 때문에 컴퓨터 과학에서 일반적입니다. 단점은 제대로 작성되지 않으면 무한 루프 및 기타 예기치 않은 결과가 발생할 수 있다는 것입니다. 예를 들어 위의 예에서 숫자가 0 이하이거나 9보다 크면 함수가 종료됩니다. 적절한 케이스가 실행을 중지하는 함수에 포함되지 않으면 재귀가 영원히 반복되어 프로그램이 충돌하거나 더 심해져 전체 컴퓨터 시스템이 중단됩니다.

일부 재귀 정렬 알고리즘, 트리 워킹 알고리즘, 맵/축소 알고리즘, 분할 및 정복 이 기법의 모든 예입니다.

Search