汉诺塔的递归算法不理解?
工具/原料
C语言
方法/步骤
1
汉诺塔(hanio)问题:
3
代码:void hanio(int n,char a,char b,char c)//搬n个盘子从a到c,b为过渡{ if(n == 1) printf('%c-->%c\n',a,c);//只有一个盘子,直接从a搬到c else { hanio(n-1,a,c,b);//先将a塔上面(最大的在下面)的n-1个盘子,搬到b,c为过渡 printf('%c-->%c\n',a,c);//再把最后一个盘子从a搬到c hanio(n-1,b,a,c);//搬完之后n-1个盘子搬到了b塔,b开始做为开始塔,a为过渡塔,将n-1个盘子从b搬到c }}
4
函数hanio(n,a,b,c)其中,参数n:表示一共有n个盘子;第二个参数a,表示起始塔;第三个参数b,表示过渡塔;第四个参数c,表示目的地塔;(总之就是从第二个参数搬到第四个参数,谁在那个位置,就代表了那个位置参数的意义)
注意事项
1
刚弄懂了,希望帮到有缘人!
2
有问题欢迎询问,不定时回答哦!
上一篇:Hole.io游戏怎么玩
下一篇:汉诺塔递归问题C语言编程