>  기사  >  웹 프론트엔드  >  JavaScript 재귀 함수로 '하노이 타워' 구현

JavaScript 재귀 함수로 '하노이 타워' 구현

不言
不言원래의
2018-07-05 17:07:302072검색

이 기사에서는 특정 참조 가치가 있는 "하노이 타워"를 구현하기 위한 JavaScript 재귀 함수를 주로 소개합니다. 이제 여러분과 공유합니다. 도움이 필요한 친구들이 참고할 수 있습니다.

"하노이 타워"는 유명한 퍼즐 게임입니다. 타워에는 세 개의 기둥과 직경이 다른 속이 빈 디스크 세트가 있습니다. 처음에는 기둥에 있는 모든 디스크가 작은 것부터 큰 것 순서대로 쌓여 있습니다. 목표는 한 번에 하나의 디스크를 다른 열로 이동하여 디스크 더미를 대상 열로 이동하는 것입니다. 프로세스 중에 더 큰 디스크를 더 작은 디스크에 배치할 수 없습니다.

이 구절을 잘 해석해 보세요. 디스크가 10개 이상이면 단계 수는 분명 충격적일 것입니다. 그러나 목표는 디스크 묶음을 위의 9개 디스크로 이동하는 것입니다. 먼저 9개의 원판을 다른 기둥으로 옮긴 다음 위의 8개 원반을 하나의 세트로 간주하고 9번째 원판을 또 다른 세트로 간주하고... ...유추하여 분해하고 이동하면 재귀함수의 아이디어가 반영되었습니다.

코드를 완성해 보세요. 아주 간단하게 작성하는 방법이 있는데, 더 간단하게 작성하는 방법이 없을까요?

var hanoi = function {disc, begin, end, helper) {    if (disc > 0) {
        hanoi(disc - 1, begin, helper, end);
        document.writeln('移动圆盘 ' + disc + ' 从 ' + begin + ' 到 ' + helper);
        hanoi(disc - 1, end, begin, helper);
    }
};

hanoi(3, '柱子一', '柱子二', '柱子三');

디스크 개수가 3개일 때의 출력:

  기둥 1에서 기둥 3으로 1 이동
  기둥 1에서 기둥 2로 2 이동
기둥 3에서 기둥 2로 1 이동
기둥에서 3 이동 one To Pillar 3
  Move 1 From Pillar 2 to Pillar 1
Move 2 Move 2 From Pillar 3 to Pillar
Move 1 From Pillar 3 to Pillar

하노이 함수에 전달되는 매개변수에는 현재 이동된 디스크 번호와 디스크 번호가 포함됩니다. 3개의 기둥을 사용하게 됩니다. Senior를 호출하면 현재 처리 중인 디스크보다 상위의 디스크를 처리합니다. 결국 존재하지 않는 디스크 번호로 호출되게 됩니다. 그러한 경우에는 아무 작업도 수행하지 않습니다. 이 함수는 잘못된 값을 무시하므로 무한 루프가 발생할 염려가 없습니다.

위 내용은 이 글의 전체 내용입니다. 모든 분들의 학습에 도움이 되었으면 좋겠습니다. 더 많은 관련 내용은 PHP 중국어 홈페이지를 주목해주세요!

관련 권장 사항:

순수 JS 코드를 사용하여 문자열에 중국어 문자 수를 확인하는 방법

JavaScript를 사용하여 이미지 기반 바코드를 얻는 방법

위 내용은 JavaScript 재귀 함수로 '하노이 타워' 구현의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.