汉诺塔问题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. ...
随机推荐
- cefsharp 在anycpu下运行
从cefsharp57开始就支持anycpu了,不过需要一些设置: 1.首先要打开*.csprj文件,添加节点 <CefSharpAnyCpuSupport>true</CefSha ...
- Head First Python学习笔记1
# 递归 def recursion(movies): for item in movies: # isinstance是一个判断类型的函数 if isinstance(item,list): rec ...
- VB/C#获取资源Rources
VB.Net: My.Resources.ResourceManager.GetObject("data") C# Properties.Resources.文件名
- WebApiTestHelpPage
这是个什么鬼,第一次见到的时候,我也不知道就花几天时间看了下它的代码 在网上搜索WebApiTestHelpPage会出来很多相关页面 但是它们都是介绍怎么用的,要么就是怎么添加注释 它是怎么 ...
- SimpleScalar Course Project
https://blog.csdn.net/wahaha_nescafe/article/details/8500186 https://blog.csdn.net/wahaha_nescafe/ar ...
- data whitening
http://ufldl.stanford.edu/tutorial/unsupervised/PCAWhitening/
- K:单词查找树(Trie)
单词查找树,又称前缀树或字典树,是一种有序树,用于保存关联数组,其中的键通常是字符串.Trie可以看作是一个确定有限状态自动机(DFA).与二叉查找树不同,键不是直接保存在节点中,而是由节点在树中 ...
- monggo查询语法
db.getCollection('vvt_user_reward').find({"description":"双节活动"})
- 3D旋转效果
<!doctype html><html lang="en"><head> <meta charset="UTF-8&qu ...
- EventBus 3.0源码解析
现在网上讲解EventBus的文章大多数都是针对2.x版本的,比较老旧,本篇文章希望可以给大家在新版本上面带来帮助. EventBus 是专门为Android设计的用于订阅,发布总线的库,用到这个库的 ...