##汉诺塔问题是学习c语言的递归时不能够绕过的一个问题,但是单看代码无法直观的了解解决问题的思路,下面是我学习时的一些思路,提供给大家作为参考。

##首先是代码

#define _CRT_SECURE_NO_WARNINGS

#include<stdio.h>

void Hanio_Step(int n, char A, char B, char C)

{

if (1 == n)

 printf("%c->%c\n", A, C);

else

{

 Hanio_Step(n-1, A, C, B);

 printf("%c->%c", A, C);

 Hanio_Step(n-1, B, A, C);

}

}

int main()

{

int n = 0;

scanf("%d", &n);

Hanio_Step(n, 'A', 'B', 'C');

return 0;

}

  原理就是封装1个函数Hanio(num, ‘A’, ‘B’, ‘C’)。其中num是塔数;A、B、C,3个字符为抽象成的3个柱子。如果只有1层那么输出A;否则就有2种情况,其1是将n-1个碟子从A经C到B。其2是将n-1个碟子从B经A到C

还有另外一种代码就是把交换的代码单独写出来,最后的效果其实都是一样的