专注收集记录技术开发学习笔记、技术难点、解决方案
网站信息搜索 >> 请输入关键词:
您当前的位置: 首页 > C语言

汉诺塔有关问题

发布时间:2011-06-28 16:19:00 文章来源:www.iduyao.cn 采编人员:星星草
汉诺塔问题
汉诺塔问题,程序看的懂,但是单步跟踪以后,有种不清楚的感觉、、递归这个思想能理解,但
不知道怎么就说服不了自己,不知道大家在编程过程中有没有遇到这些问题,某一个理论或者现象,你可以
操纵使用甚至还能给别人说道说道它,但是深究就起来就感觉不是很明了、、、
大家说说理解汉诺塔这个问题时都怎么弄清楚的?
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);

}


------解决方案--------------------
开始都这样,习惯就好了.
友情提示:
信息收集于互联网,如果您发现错误或造成侵权,请及时通知本站更正或删除,具体联系方式见页面底部联系我们,谢谢。

其他相似内容:

热门推荐: