当前位置:网站首页>C语言学习练习题:汉诺塔(函数与递归)
C语言学习练习题:汉诺塔(函数与递归)
2022-07-30 12:33:00 【51CTO】
问题描述:
汉诺塔(Tower of Hanoi),又称河内塔,是一个源于 印度古老传说的 益智玩具。 大梵天创造世界的时候做了三根金刚石柱子,在一根柱子上从下往上按照大小顺序摞着64片黄金圆盘。大梵天命令 婆罗门把圆盘从下面开始按大小顺序重新摆放在另一根柱子上。并且规定,在小圆盘上不能放大圆盘,在三根柱子之间一次只能移动一个圆盘。
问题(图文)分析:
初始状态:以三个圆盘为例,圆盘1,2,3最初都放置在A柱上面,先要将1,2,3按照规则移动到C柱上。

移动步骤:
(1)1:A->C

(2)2:A->B

(3)1:A->B

(4)3:A->C

(5)1:B->A

(6)2:B->C

(7)1:A->C

递归思路:
首先将2和1看成是一个整体,将该整体移动到B柱(借助C柱),然后将3移动到C柱;之后将1移动到A柱(借助C柱),将2移动到C柱;最后将1移动到C柱。如图:

推导到n个圆盘:
先将1第n-1个圆盘看成是一个整体,将其通过C移动到B,然后将第n个移动到C;然后再将1第n-2个圆盘看成是一个整体,将其通过你C移动到A,然后将第n-1个移动到C......以此类推,如下:





程序描述:
主函数:

自定义函数1
void Hanno(int n, char a, char b, char c)
函数功能:将a柱上面的n个圆盘移动到c柱上面。

自定义函数2
void Move(int i, char a, char b)
函数功能:描述将第i个圆盘从a柱移动到b柱

代码运行结果
n=1

n>=1

边栏推荐
猜你喜欢

Zhou Hongyi: Microsoft copied the 360 security model and became the largest security company in the United States

Add the device library after Vivado installation

微信视频号视频如何下载提取?视频号直播回放如何下载?方法很简单!

【记一个kaggle划水比赛】PetFinder.my - Pawpularity Contest 宠物预测

力扣——15. 三数之和

PyQt5快速开发与实战 8.4 设置窗口背景 && 8.5 不规则窗口的显示

Unity Beginner 6 - Simple UI production (blood bar production) and audio addition and NPC dialogue bubbles (2d)

ModelCoder状态机:对柴油机工况判断策略进行建模

AlphaFold预测了几乎所有已知蛋白质!涵盖100万物种2.14亿结构,数据集开放免费用...

OpenHarmony环境搭建报错: ImportError: cannot import name ‘VERSION‘ from ‘hb.__main__‘
随机推荐
ECCV 2022 | 新加坡国立大学提出:全新可恢复型模型遗忘框架LIRF!
These critical programs are missing or too old: ma
多表联查的学习
大手笔!两所“双一流”大学,获75亿元重点支持!
nodeJs--fs模块
打破原则引入SQL,MongoDB到底想要干啥???
【记一个kaggle划水比赛】PetFinder.my - Pawpularity Contest 宠物预测
[ASP.NET Core] Dependency Injection for Option Classes
最基础01/完全背包
如何将EasyCVR平台RTSP接入的设备数据迁移到EasyNVR中?
Kubernetes之本地存储
Breaking the principle and introducing SQL, what does MongoDB want to do???
dolphinscheduler简单任务定义及复杂的跨节点传参
How to migrate the device data connected by RTSP of EasyCVR platform to EasyNVR?
【Kaggle:UW-Madison GI Tract Image Segmentation】肠胃分割比赛:赛后复盘+数据再理解
双击Idea图标打不开——解决办法
私有化部署的即时通讯平台,为企业移动业务安全保驾护航
作业7.29 目录相关函数和文件属性相关函数
漫谈金丝雀部署(Canary Deployment)
我又造了个轮子:GrpcGateway