| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 15487 人关注过本帖
标题:关于汉诺塔的递归算法,到底是怎么执行的?想的头痛
取消只看楼主 加入收藏
whukeming
Rank: 2
等 级:论坛游民
帖 子:76
专家分:51
注 册:2008-8-24
结帖率:0
收藏
已结贴  问题点数:20 回复次数:3 
关于汉诺塔的递归算法,到底是怎么执行的?想的头痛
关于汉诺塔的递归算法,到底是怎么执行的?想的头痛

当n等于2时可以理解,当n等于3是就理解不了了。现在就是想知道当n等于3时,程序到底是怎么执行的?为什么第一个输出的是a->c;

程序代码:
# include "stdio.h"

void move(int n, char a, char b, char c)

{
    if (n == 1)
        printf("\t%c->%c\n", a, c);
    
    else
    {
        
        move(n-1, a, c, b);
        
        printf("\t%c->%c\n", a, c);
        
        move(n-1, b, a, c);
        
    }
    
}
int main(void)

{
    int n;
    printf("请输入要移动的块数:");
    scanf("%d", &n);
    
    move(n, 'a', 'b', 'c');
    
    return 0;
}
/*执行结果:
a->c
a->b
c->b
a->c
b->a
b->c
a->c*/


[ 本帖最后由 whukeming 于 2013-3-30 17:08 编辑 ]
搜索更多相关主题的帖子: color 
2013-03-30 16:53
whukeming
Rank: 2
等 级:论坛游民
帖 子:76
专家分:51
注 册:2008-8-24
收藏
得分:0 
回复 2楼 azzbcc
还没了解过栈,所以还不知道怎么调试呢。

为什么n=1的时候又是 a b c 了,这步不懂

[ 本帖最后由 whukeming 于 2013-3-30 17:55 编辑 ]
2013-03-30 17:53
whukeming
Rank: 2
等 级:论坛游民
帖 子:76
专家分:51
注 册:2008-8-24
收藏
得分:0 
回复 6楼 azzbcc
我用的是mac的Xcode,不了解,具体怎么操作
2013-03-30 17:56
whukeming
Rank: 2
等 级:论坛游民
帖 子:76
专家分:51
注 册:2008-8-24
收藏
得分:0 
已经搞明白了。谢谢各位了
2013-04-02 17:51
快速回复:关于汉诺塔的递归算法,到底是怎么执行的?想的头痛
数据加载中...
 
   



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

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