汉诺塔问题(Hanoi)(1.0版)

时间:2022-11-26 07:17:43

大家晚上好呀,今天要给大家分享的是关于递归函数的应用:汉诺塔。

这个问题在我们递归函数算是很经典的。那我们就来看看吧。

首先什么是汉诺塔?就是我们有三个杆子xyz,然后x杆上面有一堆由小到大排列的盘子,然后我们要把它们从x杆借助移到z杆,并且在移动的过程中,要保持从小到大的顺序,并且一次只能移动一个盘子。

汉诺塔问题(Hanoi)(1.0版)

还是很抽象,我们可以借助我老师的图,或者有兴趣的还可以从网上找几个汉诺塔的游戏玩玩。

汉诺塔问题(Hanoi)(1.0版)

然后上述流程可以先拆分成每次把最底下的盘子移到目的的杆子,可以分为两步走,一:是把n-1个盘子移到y杆,二:把x杆最后的盘子移动到目的杆子z。然后又可以调用自己,再次把在y杆上n-1-1个盘子移到x把剩下最大的移到z上,以此类推,直到只剩下一个盘子就直接放在z杆上。

我们尝试一下,但是我失败了,只能先写一部分

汉诺塔问题(Hanoi)(1.0版)

为什么出错?因为我定义的函数和是char 但是我里面形参定义了一个int类型,错啦。

先这样,我的代码还不太好,自己还有点乱,夜深啦,明天再写,大家晚安。