php递归算法经典实例_汉诺塔问题递归算法c语言

php递归算法经典实例_汉诺塔问题递归算法c语言利用PHP实现汉诺塔汉诺塔(又称河内塔)问题是源于印度一个古老传说的益智玩具。大梵天创造世界的时候做了三根金刚石柱子,在一根柱子上从下往上按照大小顺序摞着64片黄金圆盘。大梵天命令婆罗门把圆盘从下面开始按大小顺序重新摆放在另一根柱子上。并且规定,在小圆盘上不能放大圆盘,在三根柱子之间一次只能移动一个圆盘。简而言之,有三根相邻的柱子,标号为A,B,C,A柱子上从下到上按金字塔状叠放着n个不同大…

大家好,又见面了,我是你们的朋友全栈君。如果您正在找激活码,请点击查看最新教程,关注关注公众号 “全栈程序员社区” 获取激活教程,可能之前旧版本教程已经失效.最新Idea2022.1教程亲测有效,一键激活。

Jetbrains全系列IDE使用 1年只要46元 售后保障 童叟无欺

利用PHP实现 汉诺塔

汉诺塔(又称河内塔)问题是源于印度一个古老传说的益智玩具。大梵天创造世界的时候做了三根金刚石柱子,在一根柱子上从下往上按照大小顺序摞着64片黄金圆盘。大梵天命令婆罗门把圆盘从下面开始按大小顺序重新摆放在另一根柱子上。并且规定,在小圆盘上不能放大圆盘,在三根柱子之间一次只能移动一个圆盘。简而言之,有三根相邻的柱子,标号为A,B,C,A柱子上从下到上按金字塔状叠放着n个不同大小的圆盘,要把所有盘子一个一个移动到柱子B上,并且每次移动同一根柱子上都不能出现大盘子在小盘子上方,请问至少需要多少次移动?


逻辑分析以及代码实现

<?php // 汉诺塔算法 // 实现逻辑 --> 递归 (关系可以由 n=2 比较容易想出) // 把 第 n-1 个由 A 移动到C // 把 第 n 个 由 A 移动到 B // 把 第 n-1 个由 C移动到 B function hanuota($n, $a, $b, $c) { 
     global $step; if ($n == 1) { $step++; echo " 把第 " . $n . " 个由" . $a . " 移动到 ". $b. "<br />"; } else { // 把n-1 由 A 移动到 C hanuota($n-1, $a, $c, $b); $step++; echo " 把第 " . $n . " 个由" . $a . " 移动到 ". $b. "<br />"; // 把n-1 由C 移动到 B 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
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/169573.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • 微信小程序轮播图(详细)「建议收藏」

    微信小程序轮播图(详细)「建议收藏」微信小程序轮播图效果图wxml:<swiperindicator-dots=”{{indicatorDots}}”autoplay=”{{autoplay}}”interval=”{{interval}}”duration=”{{duration}}”><blockwx:for=”{{imgUrls}}”><swiper-item><imagesrc=”{{item}}”class=”slide-image”/></sw

    2022年5月22日
    43
  • 英文搜索网站_DFS搜索

    英文搜索网站_DFS搜索给定一个 m x n 二维字符网格 board 和一个单词(字符串)列表 words,找出所有同时在二维网格和字典中出现的单词。单词必须按照字母顺序,通过 相邻的单元格 内的字母构成,其中“相邻”单元格是那些水平相邻或垂直相邻的单元格。同一个单元格内的字母在一个单词中不允许被重复使用。示例 1:输入:board = [[“o”,”a”,”a”,”n”],[“e”,”t”,”a”,”e”],[“i”,”h”,”k”,”r”],[“i”,”f”,”l”,”v”]], words = [“oath”,

    2022年8月9日
    4
  • C#多线程同步事件及等待句柄

    C#多线程同步事件及等待句柄最近捣鼓了一下多线程的同步问题,发现其实C#关于多线程同步事件处理还是很灵活,这里主要写一下,自己测试的一些代码,涉及到了AutoResetEvent和ManualResetEvent,当然还有也简要提了一下System.Threading.WaitHandle.WaitOne、System.Threading.WaitHandle.WaitAny和System.Threading.Wait

    2022年7月15日
    15
  • 淘宝准点秒杀脚本

    淘宝准点秒杀脚本腾讯云服务器优惠购买链接:1核2G云服务器首年88元:http://url.cn/5Z0ZWGI准备软件下载地址:https://download.csdn.net/download/tangcv/11968538pycharm文件太大,不好上传,直接去官网下载:https://www.jetbrains.com/pycharm/download/#section=windo…

    2022年6月14日
    35
  • 关于scanf的几种处理方法「建议收藏」

    关于scanf的几种处理方法

    2022年2月1日
    45
  • 主板上的minipcie_移远4g模组

    主板上的minipcie_移远4g模组MiniPCIE封装4G模组价值仍在2019年,中国正式进入5G商用元年。4G网络不管是速度、还是信号上都再无优势,那么4G网络会被淘汰吗?现在物联网应用最大的承载部分是在2G/3G网络,而现在的NB-IOT网络,不适用在高速率,低延时通信场景中。以前对速率,时延有一定要求的物联网设备将会向4G的LTE网络迁移,4G网络已经足够承载相关设备。也就是说,很长一段时间内就是作为物联网的承载网络…

    2025年10月3日
    5

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号