您的位置:首页 > 其它

利用函数递归调用实现汉诺塔

2012-08-09 16:27 253 查看
/*

*wuxiuwen

*利用函数递归调用实现汉诺塔

*/

#include<stdio.h>

int count; //打印的行数,同时可以看进行了多少次的操作

int hanio(int i,char from,char tmp,char to); //汉诺塔的函数,利用函数递归调用

int move(char,char); //操作

int input(void); //输入操作

int main()

{

hanio(input(),'A','B','C');

return 0;

}

int input()

{

int num=0;

printf("please input a number: \n");

scanf("%d",&num);

printf("the action is :\n");

return num;

}

int move(char from,char to)

{

count++;

printf("%d : move %c to %c\n",count,from,to);

return 0;

}

int hanio(int i,char from,char tmp,char to)

{

if(1==i)

{

move(from,to);

}

else

{

hanio(i-1,from,to,tmp);

move(from,tmp);

hanio(i-1,tmp,from,to);

}

return 0;

}

//*******************************************//

利用函数递归调用实现汉诺塔,该函数从外层进行深入函数中,进行一层层调用,然后一层层返回。

编译,执行,输入4,结果如下:

[root@localhost wuxiuwen]# ./a.out

please input a number:

4

the action is :

1 : move A to B

2 : move A to B

3 : move B to C

4 : move A to C

5 : move C to A

6 : move C to A

7 : move A to B

8 : move A to B

9 : move B to C

10 : move B to C

11 : move C to A

12 : move B to A

13 : move A to B

14 : move A to B

15 : move B to C

[root@localhost wuxiuwen]#

********************************end ************************
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: