明明的算法集

实现汉诺塔问题

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;
?>

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 导论  小编之前在分享有关的算法时,把递归这一重要的算法设计思想给遗漏了。递归的学习绝对是一个持久战,没有人可以一...
    ITsCLG阅读 8,657评论 1 5
  • 算法应用之百钱买白鸡 案列说明:主要内容是:公鸡5元一只,母鸡3元一只,小鸡1元三只,问100元怎样可以买100鸡...
    Harry小哥哥阅读 330评论 0 0
  • 题目描述 在经典汉诺塔问题中,有 3 根柱子及 N 个不同大小的穿孔圆盘,盘子可以滑入任意一根柱子。一开始,所有盘...
    珺王不早朝阅读 874评论 0 0
  • 原文链接(转载请注明出处)汉诺塔的图解递归算法 起源 汉诺塔(又称河内塔)问题是源于印度一个古老传说的益智玩具。大...
    Dmego阅读 1,601评论 0 0
  • 一、斐波那契数列 递归函数 不要尝试调用 fib(50)(这个我试过了,因为等得不耐烦 Ctrl+C 掉了)。在上...
    rollingstarky阅读 367评论 0 3