位置: 编程技术 - 正文

[置顶] 汉诺塔的原理剖析以及递归的解决办法

编辑:rootadmin

推荐整理分享[置顶] 汉诺塔的原理剖析以及递归的解决办法,希望有所帮助,仅作参考,欢迎阅读内容。

文章相关热门搜索词:,内容如对您有帮助,希望把文章链接给更多的朋友!

汉诺塔:源于印度一个古老传说的益智玩具。大梵天创造世界的时候做了三根金刚石柱子,在一根柱子上从下往上按照大小顺序摞着片黄金圆盘。大梵天命令婆罗门把圆盘从下面开始按大小顺序重新摆放在另一根柱子上。并且规定,在小圆盘上不能放大圆盘,在三根柱子之间一次只能移动一个圆盘。

如果移动一个圆盘需要1秒钟的话,等到个圆盘全部重新落在一起,宇宙被毁灭是什么时候呢?

让我们来考虑一下个圆盘重新摞好需要移动多少次吧。1个的时候当然是1次,2个的时候是3次,3个的时候就用了7次......这实在是太累了

因此让我们逻辑性的思考一下吧。

3个的时候能够移动最大的3盘时如图所示。

到此为止用了7次。

接下来如右图,在上面再放上3个圆盘时还要用7次(把3个圆盘重新放在一起需要的次数)。[2]

因此,4个的时候是

“3个圆盘重新摞在一起的次数”&#;1次&#;“3个圆盘重新摞在一起需要的次数”

=2x“3个圆盘重新摞在一起的次数”&#;1次

=次。

那么,n个的时候是

[置顶]
        汉诺塔的原理剖析以及递归的解决办法

2x“(n-1)个圆盘重新摞在一起的次数”&#;1次。

由于1个的时候是1次,结果n个的时候为(2的n次方减1)次。

1个圆盘的时候2的1次方减1

2个圆盘的时候2的2次方减1

3个圆盘的时候2的3次方减1

4个圆盘的时候2的4次方减1

5个圆盘的时候2的5次方减1

........

n个圆盘的时候2的n次方减1

也就是说,n=的时候是(2的次方减1)次。

因此,如果移动一个圆盘需要1秒的话,

宇宙的寿命=2的次方减1(秒)

2的次方减1到底有多大呢?动动计算器,答案是一个二十位的数字约是

1.*^

用一年=秒x分x小时x天来算的话,大约有亿年吧。

太阳及其行星形成于亿年前,其寿命约为亿年。

由此可见,该问题是一个世界性的难题。那么接下来我们用c#解决一下,源码如下:

using UnityEngine;using System.Collections;public class Script1 : MonoBehaviour { int aa=0; void hannuota(string a,string b,string c,int n){ if (n > 1) { hannuota (a,c,b,n-1); Debug.Log(a&#;"-->"&#;c); aa&#;&#;; hannuota (b,a,c,n-1); } else{ Debug.Log(a&#;"-->"&#;c); aa&#;&#;; } } void Start(){ hannuota("1","2","3",4); Debug.Log (aa); }}

Unity中自动寻路的几种方法(二) 前面以及讲过A星寻路的大体实现方法,除了A星寻路之外,还有很多类的寻路方案,itween插件就可以实现简单的寻路方案,下面就一个小案例来简要得讲

(Unity)NGUI 按钮的禁用 该文主要研究NGUI中的一组按钮,当一个按钮按下同时禁用掉其他按钮原理:NGUI的控件的交互都少不了BoxCollider的主击触发,故要想禁用掉按钮很简单,

unity3d android 插件 参考自unity官方文档,点击传送方法1首先在unity的assets目录下创建Plugins目录结构,具体如图bin目录里面存放已经打包好了的xxx.jar包(这里也可以在Android目录

标签: [置顶] 汉诺塔的原理剖析以及递归的解决办法

本文链接地址:https://www.jiuchutong.com/biancheng/380217.html 转载请保留说明!

上一篇:Unity3D深入浅出 - Shader基础开发(unity3ds)

下一篇:Unity中自动寻路的几种方法(二)(unityai寻路)

  • 自然人电子税务报税流程
  • 收到所得税汇算退税计入补贴收入
  • 所得税费用属于什么科目借贷方向
  • 银行贷款第三方收款人
  • 交易性金融资产属于什么科目
  • 发生采购业务无合同需要缴印花税吗
  • 费用票如何做账务处理
  • 小规模普票专票税率一样吗
  • 二手车增值税发票怎么开
  • 报销差旅费需要交进项税吗
  • 机械租赁增值税税率2022年
  • 存货置换固定资产
  • 幼儿园幼儿买花的通知
  • 子公司注销欠母公司借款怎么办
  • 出口退税逾期未申报的可以申请免税吗
  • 旧税号还能开票吗
  • 劳务公司开的3%专用发票能抵扣吗
  • 营改增后还有营业费用吗
  • 企业一般每个月几号上工伤保险
  • 少数股东损益借方增加还是贷方增加
  • 节能控制模块
  • 小规模纳税人专票如何申报
  • 税控盘服务费抵减有效期几年
  • 六月工资七月发算不算压工资
  • 注册资本认缴制开始实施时间
  • win10设置系统启动
  • PHP:mb_substr_count()的用法_mbstring函数
  • 未分配利润可留待以后年度进行分配的当年结余利润
  • 怎么给文件添加属性
  • 上一年度会计科目错误怎么更正
  • 员工福利费会计处理
  • ksysslim.exe是什么
  • 继承税遗产税新政策
  • php curl_exec
  • php利用数组完成党员信息表
  • vue2和vue3面试题
  • 《走进新时代》专栏
  • php时间戳转换成时间
  • py转换成exe后打开没用
  • 盈余公积弥补以前亏损分录
  • 固定资产的特征有哪些
  • mysql5.6.24
  • 预付费卡开票
  • SQL Server 2008 R2 超详细安装图文教程
  • 烟叶税计算时价格怎么算
  • 电影卡购买
  • 股利分配是什么科目
  • 人力资源社保代缴
  • 给客户赞助怎么写合适
  • 增值税留抵情况下要交流转税吗
  • 招标代理服务费取费标准
  • 公司既没有收入怎么办
  • 安全生产费相关规定
  • 未开票收入如何纳税申报
  • 待报解预算收入给我转了钱是什么意思
  • 利润都为负数时增长比例怎么算
  • 非税收入定额票据是什么
  • 加计扣除声明怎么填
  • sql server 2005数据备份
  • mysql删除表数据怎么恢复
  • centos rpm包存放位置
  • win10邮件和日历怎么更新新版outlook
  • 苹果15手机价格和图片颜色
  • c盘满了怎么释放空间
  • win10windows更新
  • xp系统怎么添加ip地址
  • 在局域网内,什么可进行网络资料的共享
  • mac通知中心设置方法
  • Win7系统如何打开磁盘管理工具
  • win10系统宽带连接错误解决方法
  • 微软补丁发布时间
  • windows 7安装步骤
  • win8应用商店无法使用
  • nodejs的理解
  • javax.net.ssl.SSLException: hostname in certificate didn't match:
  • jQuery实现可以控制图片旋转角度效果(附demo源码下载)
  • 瀑布流软件
  • 简单的jquery插件实例
  • jquery教程chm
  • 河南省人民医院和郑大一附院哪个好
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

    网站地图: 企业信息 工商信息 财税知识 网络常识 编程技术

    友情链接: 武汉网站建设