位置: 编程技术 - 正文

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

编辑: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寻路)

  • 公司股权变更要查账吗
  • 小规模纳税人单张发票最大金额
  • 如何查询企业税务状态
  • 从价从量复合计征
  • 借款利息如何计算政策依据
  • 购入原材料计划成本
  • 一次性分红到期还本的会计分录
  • 培训产生的费用
  • 员工报销没有发票怎么入账
  • 专用发票给客户的是第几联
  • 股东向企业借款属于关联交易吗
  • 工业会计成本核算分录
  • 库存商品的成本核算
  • 厂家给经销商的授权书
  • 跨境电商怎么交税
  • 持有至到期投资在资产负债表怎么填
  • 企事业单位承包承租经营者
  • 未按规定安装使用税控装置
  • 车间发生的购买办公用品支出应计入什么账户
  • 高新企业申报指南
  • 商品残次品怎样定义
  • 如何编制处置固定资产
  • scsiaccess.exe - scsiaccess是什么进程 有什么用
  • 付的押金冲抵部分怎么算
  • PHP:pg_copy_from()的用法_PostgreSQL函数
  • 企业个人借款利息怎么做账
  • 亨茨维尔机场
  • 应缴纳的房产税计入什么科目
  • 支付税控服务费的账务处理
  • 清洁费用是属于什么科目
  • 无法按时交纳税怎么办
  • 10分钟搞定3种网红小吃
  • 申报个体经营所得税款所属期怎么填
  • 出口退税款的账务怎么做
  • HTML+CSS+JS+Jquery+练手项目+...合集(前端学习必备,持续更新中...)
  • centos+php+coreseek+sphinx+mysql之一coreseek安装篇
  • 计提工会经费明细表
  • 增值税普票遗失可否用复印件入账
  • python函数如何返回列表
  • 长期股权投资会计准则2021修订
  • 税率变更协议怎么写
  • 期末留抵退税计算公式
  • 收购发票加计扣除会计分录
  • 未达账项审计调账怎么办
  • 融资租赁业务如何高效拓展
  • 有限合伙企业中有限合伙人承担责任的方式为
  • 营业外收入应如何核算
  • 应收账款余额要包含应收票据吗
  • 学历教育服务增值税
  • 专利年费 缴纳
  • 企业取得土地补偿款
  • 无法支付的应付账款摘要怎么写
  • 支付给烟农的价格怎么算
  • 所有者权益的确认依赖于资产和负债的确认
  • win mysql
  • mysql 从库
  • MySQL 4.1/5.0/5.1/5.5/5.6各版本的主要区别整理
  • mysql导出查询结果sql
  • windows下命令
  • Win10预览版拆弹
  • centos7 lvs
  • vista starter
  • centos7 zsh
  • win7清洗打印机喷头步骤
  • 铁嘴的故事
  • 教你怎样用竹子搭棚子
  • Android SQLite总结(一)
  • shell基础教程
  • jquery源码下载
  • shell获取当前脚本的进程
  • jquery实现div左右移动
  • 在shell中获取脚本命令行参数的方法和区别
  • android的图片文件保存在工程的哪个文件夹
  • jquery对象与dom对象可以相互转换
  • jQuery+ajax简单实现文件上传的方法
  • flask框架数据可视化
  • 企业所得税税率10%
  • 安徽省电子税务局怎么下载
  • 政务服务网怎么打印电子资格证书
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

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

    友情链接: 武汉网站建设