汉诺塔问题php解决
面向过程解决
<?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解决的更多相关文章
- Python实现:汉诺塔问题
汉诺塔问题不管在任何编程语言里都是经典问题,是采用递归算法的经典案例,该问题可以抽象如下: 一 .3根圆柱A,B,C,其中A上面串了n个圆盘 二 .这些圆盘从上到下是按从小到大顺序排列的,大的圆盘任何 ...
- 编程:递归编程解决汉诺塔问题(用java实现)
Answer: //Li Cuiyun,October 14,2016. //用递归方法编程解决汉诺塔问题 package tutorial_3_5; import java.util.*; publ ...
- 用递归方法解决汉诺塔问题(Recursion Hanoi Tower Python)
汉诺塔问题源于印度的一个古老传说:梵天创造世界的时候做了三根金刚石柱子,在一根柱子上从下往上按照大小顺序摞着64片黄金圆盘.梵天命令婆罗门把圆盘按大小顺序重新摆放在另一根柱子上,并且规定小圆盘上不能放 ...
- 【学习】Python解决汉诺塔问题
参考文章:http://www.cnblogs.com/dmego/p/5965835.html 一句话:学程序不是目的,理解就好:写代码也不是必然,省事最好:拿也好,查也好,解决问题就好! ...
- C语言:使用递归解决汉诺塔问题。
//汉诺塔:汉诺塔(又称河内塔)问题是源于印度一个古老传说的益智玩具.大梵天创造世界的时候做了三根金刚石柱子,在一根柱子上从下往上按照大小顺序摞着64片黄金圆盘.大梵天命令婆罗门把圆盘从下面开始按大小 ...
- 关于C语言解决汉诺塔(hanoi)问题
C语言解决汉诺塔问题 汉诺塔是典型的递归调用问题: hanoi简介:印度教的主神梵天在创造世界的时候,在其中一根针上从下到上地穿好了由大到小的64片金片,这就是所谓的汉诺塔.不论白天黑夜,总有一个僧侣 ...
- C#递归解决汉诺塔问题(Hanoi)
using System;using System.Collections.Generic;using System.Linq;using System.Text; namespace MyExamp ...
- java 解决汉诺塔问题
//汉诺塔问题//HanYang 2016/10/15 import java.util.Scanner; //输出public class Hanuota { public static void ...
- python解决汉诺塔问题
今天刚刚在博客园安家,不知道写点什么,前两天刚刚学习完python 所以就用python写了一下汉诺塔算法,感觉还行拿出来分享一下 首先看一下描述: from :http://baike.baidu. ...
随机推荐
- 求两个Linux文本文件的交集、差集、并集
一.交集 sort a.txt b.txt | uniq -d 二.并集 sort a.txt b.txt | uniq 三.差集 a.txt-b.txt: sort a.txt b.txt b.tx ...
- Ionic3 UI组件之 ImageViewer
组件特性: 轻触图片可全屏查看 手势上下滑动可关闭全屏查看 点击导航箭头可关闭视图 双击查看全图,并可放大 参考地址:https://github.com/Riron/ionic-img-viewer ...
- DOM (文档对象模型(Document Object Model))
文档对象模型(Document Object Model,简称DOM),是W3C组织推荐的处理可扩展标志语言的标准编程接口.在网页上,组织页面(或文档)的对象被组织在一个树形结构中,用来表示文档中对象 ...
- sql中根据逗号分隔,查出多行数据
--sql中根据逗号分隔,查出多行数据 select a.DiscussID,b.LocationID from (select DiscussID,LocationID=c ...
- C# 开发者审查代码的41条建议
1. 确保没有任何警告(warnings). 2.如果先执行Code Analysis(启用所有Microsoft Rules)再消除所有警告就更好了. 3. 去掉所有没有用到的usings.编码过程 ...
- Vertica示例数据库安装
1.示例数据库简介: Vertica跟传统数据库一样,自带了示例数据库--VMart示例数据库,是一个多架构数据库.该数据是大型超市(VMart)中可能会用到的数据库,可用来访问产品.客户.员工以及网 ...
- sgsdg
wrjow we wetwer werwer werwer werqw qweqwrq qwrqwr @ApiOperation("根据条件分页查询试卷") @ApiRespons ...
- [日常] SinaMail项目和技术能力总结
一.企邮WEBMAIL项目1.完成手机绑定二次验证,绑定手机提升账户的安全性2.登陆验证接口改造,增加一系列登陆限制,增强webmail的系统可靠性3.增加外发限制功能,及时控制用户发信行为,有利于企 ...
- windows10下mysql8.0.11忘记密码的解决办法
首先输入 新开一个cmd窗口,登录mysql,刷新权限表 FLUSH PRIVILEGES; 经过我再次修改密码测试,只用下面这条语句就可以了 ALTER USER 'root'@'localhost ...
- dubbo学习思路梳理
dubbo要解决的问题 rpc调用需要定制.额外的工作量 分布式服务中,服务动辄几十上百,相互之间的调用错综复杂,相互依赖严重 对集群性的服务,需要负载策略 对集群性的服务,能动态扩展节点 dubbo ...