递归算法解决汉诺塔问题

本文详细介绍了如何运用递归算法解决经典的汉诺塔问题。首先,阐述了问题描述,接着分析了当盘子数量为3时的具体移动步骤,并归纳出了一般性的解决策略。然后,给出了为n个盘子时的递归解决方案,通过将问题分解为更小的部分来实现盘子的转移。最后,展示了对应的代码实现和运行结果。
摘要由CSDN通过智能技术生成

问题描述

有三根柱子A、B、C,A柱上有从小到大串着的盘子,B、C柱上什么东西都没有;
要求:每次只能移动一个盘子,柱子上只能的盘子只能从小到大排列,将A柱上的盘子移动到C柱上。
在这里插入图片描述

递推算法

计算机程序函数在定义或者说明时直接或间接的调用自己本身的一种方法;

解决分析

n=3时

在这里插入图片描述
具体做法:先将1从A移到C,再将2从A移到B,再将1从C移到B,将3从A移到C;将B上的1移到A,将B上的2移到C;最后将3从A移到C。
总结做法:

1.想办法将1和2从A移到B,将3从A移到C;
2. 将B上的1从B移到A,将2从B移到C;
3. 将A上的1从A移到C。

为n时:

1.将前n-1个盘子从A移动到B,将n从A移动到C;
2.将n-2个盘子从B移动到A,将n-1从B移到C;
3.将第一步中的n换成n-1,重复第一步第二步,直至全部移动到C。
注:将n-1

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值