| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 255 人关注过本帖
标题:关于递归的问题,求前辈帮忙
只看楼主 加入收藏
hywhll888
Rank: 1
等 级:新手上路
帖 子:40
专家分:0
注 册:2011-6-9
结帖率:100%
收藏
已结贴  问题点数:20 回复次数:2 
关于递归的问题,求前辈帮忙
看了汉诺塔的递归问题 百思不的其解 求前辈帮忙
#include <stdio.h>
void main()
{
    void hanoi(int n,char one,char two,char three);
    int m;
    printf("input the number of diskes:");
    scanf("%d",&m);
    printf("the step to moveing %d diskes:\n",m);
    hanoi(m,'a','b','c');
}

void hanoi(int n,char one,char two,char three)
{
    void move(char x,char y);
    if(n==1)
        move(one,three);
    else {
        hanoi(n-1,one,three,two);
        move(one,three);
        hanoi(n-1,two,one,three);
    }
}

void move(char x,char y)
{
    printf("%c-->%c\n",x,y);
}


求移动目标的具体分解代码,a,b,c对应one two three的关系 输入3就好。。。
2011-07-02 21:57
ybjkl
Rank: 2
等 级:论坛游民
帖 子:86
专家分:85
注 册:2011-6-21
收藏
得分:20 
void hanoi(unsigned int i, char a, char b, char c)
{
    if (i == 1)
    {//移动一次由a直接到c
        printf("%c -> %c\n", a, c);
    }
    else
    {
        hanoi(i-1, a, c, b);//a借助c把i-1个运到b
        printf("%c -> %c\n", a, c);//把a直接搬到c

        hanoi(i-1, b, a, c);
    }
}

int main(void)
{
    hanoi(3, 'A', 'B', 'C');

    return 0;
}
我觉得这个程序好理解些。
2011-07-03 15:33
makebest
Rank: 8Rank: 8
等 级:蝙蝠侠
威 望:3
帖 子:658
专家分:962
注 册:2005-3-17
收藏
得分:0 
递归其实很好理解的:
题目要求:将N个从one移到 three
解决办法:将N-1个从one移到two,将1个从one移到three,再将N-1个从two移到three
懂了吗? 解决办法的第一步和第三步又可以变成同样的题目要求,只是数量变少了.

2011-07-03 20:30
快速回复:关于递归的问题,求前辈帮忙
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.011396 second(s), 7 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved