当前位置:网站首页>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
边栏推荐
- 为什么说Prometheus是足以取代Zabbix的监控神器?
- Hu-cang integrated e-commerce project (1): project background and structure introduction
- 基于卷积神经网络与双向长短时融合的锂离子电池剩余使用寿命预测
- 基于DoS攻击能量分级的ICPS综合安全控制与通信协同设计
- Beijing, Shanghai and Guangzhou offline events丨The most unmissable technology gatherings at the end of the year are all gathered
- 并行化快速排序设想
- ECCV 2022 | 新加坡国立大学提出:全新可恢复型模型遗忘框架LIRF!
- 历时两月,终拿字节跳动offer,算法面试题分享「带答案」
- 第42讲:Scala中泛型类、泛型函数、泛型在Spark中的广泛应用
- int a=8,a=a++,a? int b=8,b=b+1,b?
猜你喜欢
Yilian: Activating the Value Potential of Data Elements and Unleashing the Innovation Dividend of SAS SSD
[BJDCTF2020]Cookie is so stable-1|SSTI injection
维护数千规模MySQL实例,数据库灾备体系构建指南
13-GuliMall 基础篇总结
13-GuliMall Basics Summary
作业7.29 目录相关函数和文件属性相关函数
打破原则引入SQL,MongoDB到底想要干啥???
奇异值分解(SVD)原理与在降维中的应用(附带例题讲解)(纯理论)
js 构造函数 return 非空对象,其实例化的对象在原型上的差异
双击Idea图标打不开——解决办法
随机推荐
如何把Excel表格显示到邮件正文里?
Why is Prometheus a monitoring artifact sufficient to replace Zabbix?
关于File文件的相关知识
Breaking the principle and introducing SQL, what does MongoDB want to do???
湖仓一体电商项目(二):项目使用技术及版本和基础环境准备
Hand tearing read-write lock performance test
DOM常用方法以及项目
Anaconda\Scripts\pip-script.py is not present ? 解决方案
手慢无!阿里亿级流量高并发系统设计核心原理全彩笔记现实开源
nodeJs--fs模块
EasyNVS云管理平台功能重构:支持新增用户、修改信息等
腰部外骨骼机器人线性自抗扰控制器参数优化
打破原则引入SQL,MongoDB到底想要干啥???
奇异值分解(SVD)原理与在降维中的应用(附带例题讲解)(纯理论)
来n遍剑指--04. 二维数组中的查找
【河北工业大学】考研初试复试资料分享
int a=8,a=a++,a? int b=8,b=b+1,b?
dolphinscheduler simple task definition and complex cross-node parameter transfer
Using Baidu EasyDL to realize the recognition of the chef's hat of the bright kitchen
EasyNVS cloud management platform function reconstruction: support for adding users, modifying information, etc.