读书人

汉诺塔有关问题

发布时间: 2012-03-12 12:45:33 作者: rapoo

汉诺塔问题
汉诺塔问题,程序看的懂,但是单步跟踪以后,有种不清楚的感觉、、递归这个思想能理解,但
不知道怎么就说服不了自己,不知道大家在编程过程中有没有遇到这些问题,某一个理论或者现象,你可以
操纵使用甚至还能给别人说道说道它,但是深究就起来就感觉不是很明了、、、
大家说说理解汉诺塔这个问题时都怎么弄清楚的?

C/C++ code
#include <stdio.h>static long m = 0; //m记录步数void Move(char x1,char x3){//从A移动到C    printf("\n移动顶部盘子%c->%c",x1,x3);    m++;}void Hanoi(int n,char x1,char x2,char x3){//把n个盘子从X1移动到X3,X2作辅助    if(n==1) Move(x1,x3);    else    {        Hanoi(n-1,x1,x3,x2); //虽然是个调用但是传入的参数是不同的        Move(x1,x3);        Hanoi(n-1,x2,x1,x3);    }}void main(){    int n;    printf("请输入盘子数:");    scanf("%d",&n);    printf("\n步骤如下:\n");    Hanoi(n,'A','B','C');    printf("\n");    printf("移动的总步数为:%d\n",m);}


[解决办法]
开始都这样,习惯就好了.

读书人网 >C语言

热点推荐