面向过程解决

<?php
function hanio($n,$x,$y,$z){//把n个盘子,按照要求从x移到z,y是中介
//递归跳出条件
if($n==1){
move($n, $x, $z);
}else{
//这三部是核心
hanio($n-1, $x, $z, $y);
move($n, $x, $z);
hanio($n-1, $y, $x, $z);
}
} function move($n, $x, $y){
$format = '把%d从%s移动到%s';
printf($format,$n,$x,$y);
echo "<br/>";
} hanio(2, 'A', 'B', 'C');
?>

  面向过程写

<?php
class Hanio{
private $n;//规模
private $start;//起始柱子
private $mediator;//中介柱子
private $goal;//目标柱子
private $format = '把%d从%s移动到%s';
public function __construct($n,$start,$mediator,$goal){
$this->n = $n;
$this->start = $start;
$this->mediator = $mediator;
$this->goal = $goal;
} //单个盘移动
private function move($n,$start,$goal){
printf($this->format,$n,$start,$goal);
echo "<br/>";
} public function getResult(){
$this->handle($this->n,$this->start,$this->mediator,$this->goal);
} private function handle($n,$x,$y,$z){
//递归跳出条件
if($n==1){
$this->move($n, $x, $z);
}else{
//这三部是核心
$this->handle($n-1, $x, $z, $y);
$this->move($n, $x, $z);
$this->handle($n-1, $y, $x, $z);
}
} } class Client{
public static function main(){
$hanio = new Hanio(4, 'A', 'B', 'C');
$hanio->getResult();
}
} Client::main();
?>

  

汉诺塔问题php解决的更多相关文章

  1. Python实现:汉诺塔问题

    汉诺塔问题不管在任何编程语言里都是经典问题,是采用递归算法的经典案例,该问题可以抽象如下: 一 .3根圆柱A,B,C,其中A上面串了n个圆盘 二 .这些圆盘从上到下是按从小到大顺序排列的,大的圆盘任何 ...

  2. 编程:递归编程解决汉诺塔问题(用java实现)

    Answer: //Li Cuiyun,October 14,2016. //用递归方法编程解决汉诺塔问题 package tutorial_3_5; import java.util.*; publ ...

  3. 用递归方法解决汉诺塔问题(Recursion Hanoi Tower Python)

    汉诺塔问题源于印度的一个古老传说:梵天创造世界的时候做了三根金刚石柱子,在一根柱子上从下往上按照大小顺序摞着64片黄金圆盘.梵天命令婆罗门把圆盘按大小顺序重新摆放在另一根柱子上,并且规定小圆盘上不能放 ...

  4. 【学习】Python解决汉诺塔问题

    参考文章:http://www.cnblogs.com/dmego/p/5965835.html   一句话:学程序不是目的,理解就好:写代码也不是必然,省事最好:拿也好,查也好,解决问题就好!   ...

  5. C语言:使用递归解决汉诺塔问题。

    //汉诺塔:汉诺塔(又称河内塔)问题是源于印度一个古老传说的益智玩具.大梵天创造世界的时候做了三根金刚石柱子,在一根柱子上从下往上按照大小顺序摞着64片黄金圆盘.大梵天命令婆罗门把圆盘从下面开始按大小 ...

  6. 关于C语言解决汉诺塔(hanoi)问题

    C语言解决汉诺塔问题 汉诺塔是典型的递归调用问题: hanoi简介:印度教的主神梵天在创造世界的时候,在其中一根针上从下到上地穿好了由大到小的64片金片,这就是所谓的汉诺塔.不论白天黑夜,总有一个僧侣 ...

  7. C#递归解决汉诺塔问题(Hanoi)

    using System;using System.Collections.Generic;using System.Linq;using System.Text; namespace MyExamp ...

  8. java 解决汉诺塔问题

    //汉诺塔问题//HanYang 2016/10/15 import java.util.Scanner; //输出public class Hanuota { public static void ...

  9. python解决汉诺塔问题

    今天刚刚在博客园安家,不知道写点什么,前两天刚刚学习完python 所以就用python写了一下汉诺塔算法,感觉还行拿出来分享一下 首先看一下描述: from :http://baike.baidu. ...

随机推荐

  1. cefsharp 在anycpu下运行

    从cefsharp57开始就支持anycpu了,不过需要一些设置: 1.首先要打开*.csprj文件,添加节点 <CefSharpAnyCpuSupport>true</CefSha ...

  2. Head First Python学习笔记1

    # 递归 def recursion(movies): for item in movies: # isinstance是一个判断类型的函数 if isinstance(item,list): rec ...

  3. VB/C#获取资源Rources

    VB.Net: My.Resources.ResourceManager.GetObject("data") C# Properties.Resources.文件名

  4. WebApiTestHelpPage

    这是个什么鬼,第一次见到的时候,我也不知道就花几天时间看了下它的代码 在网上搜索WebApiTestHelpPage会出来很多相关页面   但是它们都是介绍怎么用的,要么就是怎么添加注释   它是怎么 ...

  5. SimpleScalar Course Project

    https://blog.csdn.net/wahaha_nescafe/article/details/8500186 https://blog.csdn.net/wahaha_nescafe/ar ...

  6. data whitening

    http://ufldl.stanford.edu/tutorial/unsupervised/PCAWhitening/

  7. K:单词查找树(Trie)

      单词查找树,又称前缀树或字典树,是一种有序树,用于保存关联数组,其中的键通常是字符串.Trie可以看作是一个确定有限状态自动机(DFA).与二叉查找树不同,键不是直接保存在节点中,而是由节点在树中 ...

  8. monggo查询语法

    db.getCollection('vvt_user_reward').find({"description":"双节活动"})

  9. 3D旋转效果

    <!doctype html><html lang="en"><head>    <meta charset="UTF-8&qu ...

  10. EventBus 3.0源码解析

    现在网上讲解EventBus的文章大多数都是针对2.x版本的,比较老旧,本篇文章希望可以给大家在新版本上面带来帮助. EventBus 是专门为Android设计的用于订阅,发布总线的库,用到这个库的 ...