| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
共有 2791 人关注过本帖
标题:汉诺塔问题
取消只看楼主 加入收藏
习惯被动
Rank: 3Rank: 3
等 级:论坛游侠
威 望:1
帖 子:139
专家分:144
注 册:2012-3-5
结帖率:84.62%
收藏
已结贴  问题点数:20 回复次数:3 
汉诺塔问题
程序代码:
#include<iostream.h>
void move(char one,char anoth)
{
    cout<<one<<"移动到"<<anoth<<endl;
}

void hanoi(int n,char no1,char no2,char no3)
{
    //
    if (n==1) move(no1,no3);
    else
    {
        hanoi(n-1,no1,no3,no2);//
        move(no1,no3);
        hanoi(n-1,no2,no1,no3);//
    }
}

void main()
{
    void hanoi(int n,char no1,char no2,char no3);
    int m;
    cout<<"请输入A柱上的金盘子总数:";
    cin>>m;
    cout<<"当有"<<m<<"个金盘子时,移动步骤依次为:"<<endl;
    hanoi(m,'A','B','C');
}
程序如上能不能解释一下else那部分的递归是怎么回事,本人看了半天看不懂。
2012-03-10 13:23
习惯被动
Rank: 3Rank: 3
等 级:论坛游侠
威 望:1
帖 子:139
专家分:144
注 册:2012-3-5
收藏
得分:0 
回复 2楼 yiqiliu1209
n-1个盘一起移动吗?不是每次只能移动一个吗?如果不是一起移动,那计算机是怎么把那n-1个盘按要求移动的,上面的代码好像没有具体的做法。能不能解释详细点?
2012-03-10 19:02
习惯被动
Rank: 3Rank: 3
等 级:论坛游侠
威 望:1
帖 子:139
专家分:144
注 册:2012-3-5
收藏
得分:0 
回复 4楼 非死亡!
那个帖子我看过,不过就是弄不懂计算机是怎么运行的,我从代码里面看不懂这个算法。能不能给个详细的解释。拜托了。
2012-03-11 00:31
习惯被动
Rank: 3Rank: 3
等 级:论坛游侠
威 望:1
帖 子:139
专家分:144
注 册:2012-3-5
收藏
得分:0 
回复 6楼 achj198781
谢谢,回答很详细!
2012-03-12 11:35
快速回复:汉诺塔问题
数据加载中...
 
   



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

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