<?php
$num = 10;
$count = hanoi( $num, 'A', 'B', 'C' );
echo "一共移动$count 次.";
/**
* 如果只有一个盘子, 则直接从起始柱移动到目标柱
* 否则, 先把 n - 1 个盘子 从起始柱经过目标柱移动到中间柱上
* 然后把第 n 个盘子 从起始柱移动到目标盘子
* 再把 中间柱上的 n - 1 个盘子 从中间柱经过起始柱移动到目标柱上.
* 移动总次数 = 2 ^ n - 1
*/
function hanoi( $num, $start, $mid, $end )
{
static $count = 0;
if( $num == 1 )
{
echo "$num: $start\t>>\t$end\n";
$count ++;
} else
{
hanoi( $num - 1, $start, $end, $mid );
echo "$num: $start\t>>\t$end\n";
$count ++;
hanoi( $num -1, $mid, $start, $end );
}
return $count;
}汉诺塔小程序
最新推荐文章于 2020-11-11 15:06:15 发布
本文介绍了一个使用PHP语言实现的汉诺塔问题解决方案。通过递归函数的方式,演示了如何将不同数量的盘子从一个柱子移动到另一个柱子,并详细记录了每一步移动的过程。同时展示了递归算法中如何计算移动的总次数。
1336

被折叠的 条评论
为什么被折叠?



