> 웹 프론트엔드 > 프런트엔드 Q&A > JavaScript에서 재귀 알고리즘을 구현하는 방법은 무엇입니까?

JavaScript에서 재귀 알고리즘을 구현하는 방법은 무엇입니까?

PHPz
풀어 주다: 2023-04-21 16:22:59
원래의
647명이 탐색했습니다.

재귀 알고리즘은 재귀 함수 호출을 통해 문제를 분해하고 해결할 수 있는 일반적인 알고리즘 아이디어입니다. JavaScript에서 재귀 함수의 구현은 매우 간단합니다. 함수 호출 순서와 종료 조건에만 주의하면 됩니다.

다음으로 JavaScript에서의 재귀 알고리즘 구현 방법을 예제를 통해 소개하겠습니다.

예 1: 피보나치 수열의 n번째 항의 값을 구하세요

피보나치 수열은 0, 1, 1, 2, 3, 5, 8, 13, 21, 34,… 첫 번째 항목은 0이고 두 번째 항목은 1이며 각 후속 항목은 이전 두 항목의 합계입니다. 다음은 재귀 알고리즘을 사용하여 피보나치 수열의 n번째 항목 값을 찾습니다.

function fibonacci(n) {
  if(n <= 1) {
    return n;
  } else {
    return fibonacci(n-1) + fibonacci(n-2);
  }
}
로그인 후 복사

위 코드에서 먼저 n이 1인지 0인지 확인합니다. 그렇다면 n 자체를 재귀의 종료 조건으로 반환합니다. n이 1이나 0이 아니면 문제를 분해하여 처음 두 항목의 합을 풀고 종료 조건에 도달할 때까지 자체 함수를 재귀적으로 호출합니다.

예제 2: 하노이 탑 문제

하노이 탑 문제는 고전적인 재귀 문제로 다음과 같이 설명됩니다. 세 개의 기둥이 있고 기둥 중 하나에 서로 다른 크기의 여러 디스크가 배치되어 있습니다. 디스크가 가장 크며, 다른 디스크는 순서대로 감소합니다. 이제 이 디스크를 다른 기둥으로 옮겨야 합니다. 이동하는 동안 큰 디스크 위의 한 기둥에 작은 디스크를 놓아야 하며 한 번에 하나의 디스크만 이동할 수 있습니다. 이동 조건이 충족되었을 때 모든 디스크를 다른 기둥으로 이동하려면 몇 번의 이동이 필요한지 묻고 싶습니다.

다음은 하노이 타워 문제에 대한 재귀 알고리즘의 구현입니다.

function hannuo(n, A, B, C) {
  if(n === 1) {
    console.log(`将第${n}个圆盘从${A}移动到${C}`);
  } else {
    hannuo(n-1, A, C, B);
    console.log(`将第${n}个圆盘从${A}移动到${C}`);
    hannuo(n-1, B, A, C);
  }
}
로그인 후 복사

그 중 n은 디스크 수를 나타내고, A, B, C는 각각 세 개의 기둥을 나타냅니다. hannuo의 함수는 다음과 같습니다. A의 맨 아래에서 n개의 디스크를 이동하려면 C의 맨 아래로, B의 맨 아래를 중간에 사용해야 합니다. 재귀 과정에서는 순환이 도달할 때까지 축소된 규모의 하위 문제를 지속적으로 해결해야 합니다. 가장 작은 문제는 첫 번째 디스크를 A에서 C로 옮기는 것입니다. 최종 결과는 hannuo(n, 'A', 'B', 'C')를 호출하여 이동 단계를 해결하고 출력하는 것입니다.

재귀 알고리즘은 복잡한 문제를 해결하는 데 도움이 될 수 있지만 무한 재귀를 피하기 위해 주의도 필요하므로 코드를 작성할 때는 주의해야 합니다.

위 내용은 JavaScript에서 재귀 알고리즘을 구현하는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

원천:php.cn
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿