1 <?php
2 /**
3 *汉诺塔
4 *递归结束条件:
5 *当未移往目的桩的铁盘数为1时,将编号为1的铁盘移至目的桩。
6 *
7 *递归执行部分:
8 *(1)将前N-1个铁盘从来源桩移往辅助桩。
9 *(2)将编号为N的铁盘从来源桩移至目的桩。
10 *(3)将前N-1个铁盘从辅助桩移至目的桩。
11 */
12 $counter = 1;//初始化计数器
13 function hanoi($from,$to,$aux,$num){
14 global $counter;
15 if (1==$num){
16 echo '第'.$counter++.'步:'.$num.'铁盘从'.$from.'桩移至'.$to.'桩<br/>';
17 }else{
18 hanoi($from,$aux,$to,$num-1);
19 echo '第'.$counter++.'步:'.$num.'铁盘从'.$from.'桩移至'.$to.'桩<br/>';
20 hanoi($aux,$to,$from,$num-1);
21 }
22 }
23 $from = 'A';//桩A
24 $to = 'C';//桩C
25 $aux = 'B';//桩B(辅助桩)
26 $num = 3;//铁盘数
27 hanoi($from,$to,$aux,$num);