汉诺塔递归算法思想(汉诺塔递归算法)

导读 你们好,最近小活发现有诸多的小伙伴们对于汉诺塔递归算法思想,汉诺塔递归算法这个问题都颇为感兴趣的,今天小活为大家梳理了下,一起往下

你们好,最近小活发现有诸多的小伙伴们对于汉诺塔递归算法思想,汉诺塔递归算法这个问题都颇为感兴趣的,今天小活为大家梳理了下,一起往下看看吧。

1、汉诺塔(hanio)问题:

2、伪算法:n个盘子,从a搬到c

3、hanio(n个盘子,从a搬到c)

4、{

5、 if(n==1)

6、 直接把盘子从a搬到c;

7、 else

8、 {

9、 hanio(n-1个盘子,从a先搬到b);

10、 最后第n个盘子,从a搬到c;

11、 hanio(n-1个盘子,从b搬到c);

12、 }

13、}

14、代码:

15、void hanio(int n,char a,char b,char c)//搬n个盘子从a到c,b为过渡

16、{

17、 if(n == 1)

18、 printf("%c-->%c\n",a,c);//只有一个盘子,直接从a搬到c

19、 else

20、 {

21、 hanio(n-1,a,c,b);//先将a塔上面(最大的在下面)的n-1个盘子,搬到b,c为过渡

22、 printf("%c-->%c\n",a,c);//再把最后一个盘子从a搬到c

23、 hanio(n-1,b,a,c);//搬完之后n-1个盘子搬到了b塔,b开始做为开始塔,a为过渡塔,将n-1个盘子从b搬到c

24、 }

25、}

26、函数hanio(n,a,b,c)

27、其中,参数n:表示一共有n个盘子;

28、第二个参数a,表示起始塔;

29、第三个参数b,表示过渡塔;

30、第四个参数c,表示目的地塔;

31、(总之就是从第二个参数搬到第四个参数,谁在那个位置,就代表了那个位置参数的意义)

以上就是汉诺塔递归算法这篇文章的一些介绍,希望对大家有所帮助。

标签:

免责声明:本文由用户上传,如有侵权请联系删除!