多语言展示
当前在线:1364今日阅读:39今日分享:10

汉诺塔的递归算法不理解?

汉诺塔的递归算法不理解?
工具/原料

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

有问题欢迎询问,不定时回答哦!

推荐信息