标题:汉诺塔问题
取消只看楼主
习惯被动
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



参与讨论请移步原网站贴子:https://bbs.bccn.net/thread-362723-1-1.html




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

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