算法分析:
假如有三个盘子在塔A上,需要移到塔C,按照一定的规则,需要借助塔B,移动的情形如下:
当有3个盘子时,共需要2^3-1步,则当有n个盘子时,需要2^n-1步。
算法实现:
<span style="font-family:Microsoft YaHei;font-size:18px;"><?PHP
//汉诺塔实现
//n个盘子,x,y,z,三个柱子。
function Hanoi($n,$x,$y,$z){
if($n == 1){
echo "move 1 from ".$x." to".$z."</br>";
}else{
Hanoi($n - 1,$x,$z,$y);//将n-1个盘子通过y从x移到z
echo "move ".$n." from".$x." to ".$z."</br>";
Hanoi($n - 1,$y,$z,$x);//将n-1个盘子通过x从y移到z
}
}
Hanoi(3,'x','y','z');</span>