C语言-----递归解决汉诺塔问题(典型递归)

本文介绍了使用C语言通过递归方式解决经典的汉诺塔问题,详细解析了移动63个盘子的过程,包括两个不同场景的步骤:第一个场景涉及与第二个和尚合作,第二个场景涉及与第三个和尚合作。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

题目:
     这是一个典型的用递归解决的例子,问题是这样的:古代有一个梵塔,塔内有三个座A,B,C,开始时A座上有64个盘子,盘子大小不等,大的在下,小的在上,有一个和尚想把这64 个盘子从A移到C,规定每次只能移到一个盘子且在移的过程中始终保持打大的在下,小的在上。用编程写出移动过程。

解题思路:
        这个问题看着很麻烦,不知道从何下手,那是想的太复杂,类似这种复杂的问题,首先要做的就是它简单化。我们怎么完成这个呢?应该这样想,如果有另一个和尚把上面63个盘子移走。那么,问题就解决了。此时,老和尚要这样做:

1.让第二个和尚将63 个盘子从A盘移到B盘:

2.自己将最下面的盘子从A盘移到C盘:

3.在让第二个和尚将63个盘子从B盘移到C座。

现在就完成了,此时有一个问题就是怎么让第二个和尚从A盘移到B盘?这时 需要第三个和尚把62个盘子移走,第二个和尚就能把第63个盘子从A盘移到B盘。第三个和尚需要这样做࿱
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值