汉诺塔问题(经典递归,C语言)
文章目录
- 前言
- 一、汉诺塔是什么?
- 二、分析
- 三、分析代码
四、代码结果
- 三、分析代码
前言
自己的一些思路,第一次写博客,有哪里错误的,希望大家能指点一下。
一、汉诺塔是什么
汉诺塔(Tower of Hanoi),又称河内塔,是一个源于印度古老传说的益智玩具。大梵天创造世界的时候做了三根金刚石柱子,在一根柱子上从下往上按照大小顺序摞着64片黄金圆盘。大梵天命令婆罗门把圆盘从下面开始按大小顺序重新摆放在另一根柱子上。并且规定,在小圆盘上不能放大圆盘,在三根柱子之间一次只能移动一个圆盘。
问题简述:(以3个圆盘举例) 将这三个圆盘从X搬运到Z,求移动多少次才能完成?
条件:搬运途中每次只能移动一个圆盘,并且小圆盘上不能放大圆盘
二、分析(以3个圆盘为例)
1.第一步:把圆盘1从X柱移动到Z柱,圆盘2从X柱移动到Y柱(图1)
2、第二步:把圆盘1从Z柱移动到Y柱,圆盘3从X柱移动到Z柱(图2)
3、第三步:把圆盘1从Y柱移动到X柱,圆盘2从Y柱移动到Z柱(图3)
4、第四步:把圆盘1从X柱移动到Z柱,就完成啦!!!(图4)
三、实现代码
#include<stdio.h>
int m=0;
void move(int n,char form,char to)
{printf("第%d步,第%d号盘,从%c到%c\n",++m,n,form,to);
}
void hanoi(int n,int x,int y,int z)
{if(n==1){move(1,x,z);}else{hanoi(n-1,x,z,y);move(n,x,z);hanoi(n-1,y,x,z);}
}
int main()
{int n=0;printf("请输入盘数:\n");scanf("%d",&n);hanoi(n,'X','Y','Z');return 0;
}
四、运行结果
汉诺塔问题(经典递归,C语言)相关推荐
- C语言:汉诺塔(经典递归问题)
汉诺塔问题介绍 关于汉诺塔的传说: 法国数学家爱德华·卢卡斯曾编写过一个印度的古老传说:在世界中心贝拿勒斯(在印度北部)的圣庙里,一块黄铜板上插着三根宝石针.印度教的主神梵天在创造世界的时候,在其中一 ...
- python堆栈汉诺塔非递归_汉诺塔问题的递归解法和非递归解法(python语言实现)...
汉诺塔问题的非递归解法(python语言类解法) #!/usr/bin/env python #coding:utf-8 import sys import time reload(sys) sys. ...
- c语言 汉诺塔游戏下载,使用C语言解决益智游戏——“汉诺塔”
说明: 文章所有内容截选自实验楼教程[3个C语言实例带你掌握递归方法论],教程里还有两个实例,感兴趣的可以点击查看: 文章主要是带你通过解决这个游戏来利用递归解决实际问题并掌握其核心思想,懂得如何使用 ...
- 图解汉诺塔问题(递归求解)
汉诺塔:汉诺塔(Tower of Hanoi)源于印度传说中,大梵天创造世界时造了三根金钢石柱子,其中一根柱子自底向上叠着64片黄金圆盘.大梵天命令婆罗门把圆盘从下面开始按大小顺序重新摆放在另一根柱子 ...
- 7-5 汉诺塔的非递归实现 (25 分)
7-5 汉诺塔的非递归实现 (25 分) 借助堆栈以非递归(循环)方式求解汉诺塔的问题(n, a, b, c),即将N个盘子从起始柱(标记为"a")通过借助柱(标记为"b ...
- 7-107 汉诺塔的非递归实现 (25 分)
7-107 汉诺塔的非递归实现 (25 分) 借助堆栈以非递归(循环)方式求解汉诺塔的问题(n, a, b, c),即将N个盘子从起始柱(标记为"a")通过借助柱(标记为" ...
- 汉诺塔的非递归实现(借助堆栈模拟递归)
汉诺塔的非递归实现 借助堆栈以非递归(循环)方式求解汉诺塔的问题(n,a,b,c).即将n个盘子从起始柱(标记为"a")通过借助柱(标记为"b")移动到目标杜( ...
- 汉诺塔问题的递归求解
汉诺塔问题的递归求解 汉诺塔 解题思路 具体实现 汉诺塔 汉诺塔 汉诺塔(Tower of Hanoi),又称河内塔,是一个源于印度古老传说的益智玩具.大梵天创造世界的时候做了三根金刚石柱子,在一根柱 ...
- 汉诺塔问题的递归和非递归算法
汉诺塔问题是源于印度一个古老传说的益智玩具.大梵天创造世界的时候做了三根金刚石柱子,在一根柱子上从下往上按照大小顺序摞着64片黄金圆盘.大梵天命令婆罗门把圆盘从下面开始按大小顺序重新摆放在另一根柱子上 ...
- 汉诺塔问题c++递归解法
汉诺塔(Tower of Hanoi),又称河内塔,是一个源于印度古老传说的益智玩具.大梵天创造世界的时候做了三根金刚石柱子,在一根柱子上从下往上按照大小顺序摞着64片黄金圆盘.大梵天命令婆罗门把圆 ...
最新文章
- Yolo:实时目标检测实战(下)
- 【Ubuntu】Ubuntu下的录频软件SimpleScreenRecorder
- LOJ#510. 「LibreOJ NOI Round #1」北校门外的回忆(线段树)
- 理想汽车事故,智能短板暴露
- 基于python物流管理系统毕业设计-Python程序设计实验报告二
- IT人士还是要善待自己
- 【临实战】CentOS 批量配置
- 机器人学习--Mobile robot国内外优秀实验室
- python可视化神器_详解Python可视化神器Yellowbrick使用
- Oracle错误:ORA-27121: unable to determine size of shared memory segment
- mysql 常用命令集_Mysql 常用命令集
- C++ 空类,默认产生哪些成员函数
- Docker启动失败提示【exec user process caused: exec format error】
- PHP数组学习(一)
- [PHP] 解决:hex2bin(): Hexadecimal input string must have an even length
- itextpdf查找关键字坐标,以及在特定位置添加文字
- 浅谈制药企业安全供电系统的设计与应用
- OC load 和 initialize 方法
- L. Simone and graph coloring
- 系统学习机器学习之维度归约(完整篇)
热门文章
- VS使用SDL2时LNK2019无法解析的外部符号_main
- java鼠标变粗怎么办_java – 使用Apache POI使整行变粗
- Unicode和UTF编码转换
- C++解析char *p与char p[]
- mysql mapinfo_MapInfo常见数据格式
- 22-微信小程序商城 我的订单(微信小程序商城开发、小程序毕业设计、小程序源代码)(黄菊华-微信小程序开发教程)
- JavaScript表单提交
- 疯狂涨知识!最全的java手机游戏免费下载基地
- Linux 视频播放器
- 追忆童年系列:记一次寻找Flash小游戏的经历