이번에는 PHP를 사용하여 하노이 타워 문제를 구현하는 작은 케이스를 가져왔습니다.
하노이 타워(하노이 타워라고도 함)는 인도의 고대 전설에서 파생된 교육용 장난감입니다. 브라흐마는 세상을 창조했을 때 세 개의 다이아몬드 기둥을 만들었고, 한 기둥에는 64개의 금 원반이 아래에서 위로 크기대로 쌓여 있었습니다. 브라흐마는 브라만에게 디스크를 바닥부터 크기 순서대로 다른 기둥에 재배치하라고 명령했습니다. 또한 작은 원반에서는 원반을 확대할 수 없으며 세 개의 기둥 사이에서 한 번에 하나의 원반만 이동할 수 있다고 규정되어 있습니다. 즉, A, B, C라는 라벨이 붙은 3개의 인접한 기둥이 있습니다. 기둥 A에는 서로 다른 크기의 n개의 디스크가 아래에서 위로 피라미드 모양으로 쌓여 있습니다. 모든 디스크는 하나씩 기둥으로 이동해야 합니다. .B, 그리고 같은 열을 움직일 때마다 작은 판 위에 큰 판이 나타날 수 없습니다. 최소한 몇 번의 움직임이 필요합니까?
1) n-1개의 원을 A에서 C로 이동합니다 2) 나머지 원을 A에서 B로 이동
3) n-1개의 원을 C에서 B로 이동하면 완료됩니다
<?php //将所有圆盘从a移到b function hanuota($n,$a,$b,$c){ global $step; if($n==1){ $step++; echo "将圆盘 $n 从 $a 柱子 到 $b 柱子 <br />"; }else{ hanuota($n-1,$a,$c,$b); $step++; echo "将圆盘 $n 从 $a 柱子 到 $b 柱子 <br />"; hanuota($n-1,$c,$b,$a); } } //移动的次数 $step = 0; hanuota(4, 'A', 'B', 'C'); echo "移动次数:" . $step; ?>
将圆盘 1 从 A 柱子 到 C 柱子 将圆盘 2 从 A 柱子 到 B 柱子 将圆盘 1 从 C 柱子 到 B 柱子 将圆盘 3 从 A 柱子 到 C 柱子 将圆盘 1 从 B 柱子 到 A 柱子 将圆盘 2 从 B 柱子 到 C 柱子 将圆盘 1 从 A 柱子 到 C 柱子 将圆盘 4 从 A 柱子 到 B 柱子 将圆盘 1 从 C 柱子 到 B 柱子 将圆盘 2 从 C 柱子 到 A 柱子 将圆盘 1 从 B 柱子 到 A 柱子 将圆盘 3 从 C 柱子 到 B 柱子 将圆盘 1 从 A 柱子 到 C 柱子 将圆盘 2 从 A 柱子 到 B 柱子 将圆盘 1 从 C 柱子 到 B 柱子 移动次数:15
PHP는 높은 웹 사이트 트래픽과 높은 동시성 문제를 어떻게 해결합니까?
PHP 제품 플래시 세일 타이밍 구현(대규모 트래픽에 대한 솔루션)
위 내용은 하노이 타워 문제를 구현하기 위해 PHP 재귀를 작성하는 방법의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!