c语言汉诺塔递归算法_一题掌握SSS级递归算法之汉诺塔

06bf6bf760406f1ca01b3eb49855230b.gif

经典算法每日一题之汉诺塔

之所以叫做写烂的编程算法问题,是因为解法到处都是,随便百度一下,遍地都是,

这里就不过分叙说了。

什么是 汉诺塔 df567415a1dd9be02510179a8eb0168e.png

河内塔(又称汉诺塔)问题,就是在一块木板上有三个立柱,在柱1上放着三个圆盘,小的在上面,大的在下面(初始状态)。让被试将在柱1上的三个圆盘移到柱3上面(目标状态)。条件是:每次只能移动任何一个柱子上面的一个圆盘,但大的圆盘不能放在小的圆盘上。通用问题解决者的解决过程即是手段—目的分析的策略。

7a6df65d59bff674634478535328b50f.png 解题思路

递归法

  1. 把A上面n-1个盘子移动到B上。

  2. 把A上最后一个移动到C;

  3. 把B上n-1个移动到A上,再把B上最后一个移动到C;

如此循环2,3,步骤,直到把最后一个盘子移动到C上。

028626365c319cf47b1e950ba9a90a13.png实现代码 de956742edee60185eab54497eaa0efb.png 20e382d3ef68f29e3265c2a8bb973a8e.png 测试结果 6e1d1babf975d4c6509c6d471e894948.png

汉诺塔可以通过非递归算法解析,有兴趣的读者可以尝试下。

文章都是手打原创,每天最浅显的介绍C语言、C++,windows知识,喜欢我的文章就关注一波吧,可以看到最新更新和之前的文章哦。如果足下基础比较差,不妨关注下,人人都可以学习的视频教程,通俗易懂,深入浅出,一次只讲一个知识。不深奥,不需要钻研,在公交、在地铁、在厕所都可以观看,随时随地涨姿势。

566f7d9477b75b0ff98af61d859bd283.gif

听说转发文章

会给你带来好运

81ff0cf22793e65a995080ca48c93a47.png e9d99d01fc70d3f95cd8eab9e8e7126f.png微信号:coolmoying今日头条:C语言基础-扫码关注我- 15bde24d4a8c4922a478ac870b4e7b2c.png
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值