一,游戏规则
要想运用函数递归思想写出代码,首先得弄明白规则是什么。如图1(假设圆盘有三个)
A柱上有小中大三个圆盘按顺序摆放,要求把三个圆盘转移到C柱上,并且在移动过程中,较小的圆盘始终要在较大的的圆盘上。不能出现如图二所示的情况。
最终达到如图三所示的效果
二,思路分析
第一步:首相将小圆盘放到C柱上,然后再将中圆盘放到B柱上,接着再把小圆盘放到b柱上。如图4
第二步:将大圆盘放到C柱上,再将小圆盘放到A柱上。如图5
第三步:按照从大到小的顺序依次把圆盘摆放到C柱上,达到目的。如图6
三,规律探索
通过观察步骤总结出
先把除去最下面以外的圆盘借助C柱移动到B柱。
然后把最下面的的圆盘移动到C柱。
最后让B柱上的圆盘借助A柱移动到C柱。
那么如果此时有n个圆盘,可以分成第n个圆盘和上面n-1个圆盘,然后上面n-1个圆盘又可以分成第n-1个圆盘和上面n-2个圆盘,以此类推,直到最后上面没有圆盘(即只剩下一个原盘)时,直接将这个圆盘放到C柱上即可。
我们把上面提到的三个步骤设计成一个函数,不妨设为hanoi(n,x,y,z)(其中的xyz仅仅代表三根柱子的位置),依次完成三个步骤,思维导图如图7。
四,函数书写
代码如图8
注:这里的printf打印步骤对应的思维导图中的move。