标题:这段代码计算什么??
只看楼主
qqwuming
Rank: 1
等 级:新手上路
威 望:1
帖 子:48
专家分:0
注 册:2007-5-31
 问题点数:0 回复次数:5 
这段代码计算什么??
void  H(int n, int A , int B, int C )
{
    if(n>0)
{

    H(n-1, A, C B);
    MOVE(n, A , B);
    H(n-1, C, A, B);
}
搜索更多相关主题的帖子: 代码 
2008-09-03 09:19
qqwuming
Rank: 1
等 级:新手上路
威 望:1
帖 子:48
专家分:0
注 册:2007-5-31
得分:0 
继续提问.................

2008-09-03 14:03
geninsf009
Rank: 3Rank: 3
等 级:论坛游民
威 望:8
帖 子:613
专家分:95
注 册:2008-8-16
得分:0 
貌似是汉诺塔的递归程序:

这是我写的汉诺塔递归函数:
////////////////////////////////////////////////////
//Hanoi()函数   递归求解汉诺塔问题
//n:盘子的个数  A,B,C表示三个柱子
//即把A上所有的盘子,以B为过渡全部移到C上
////////////////////////////////////////////////////
void Hanoi(int n,char A,char B,char C)
{
    if(n==1)
    {
        //递归结束的条件
        cout<<"把顶部的盘子从柱子:"<<A
        <<"------->"<<C<<endl;
    }
    else
    {
        //以C作为过渡把A上的上面n-1个盘子移到B上
        Hanoi(n-1,A,C,B);
        cout<<"把顶部的盘子从柱子:"<<A
        <<"------->"<<C<<endl;
        //以A作为过渡把B上所有的n-1个盘子全部移到C上
        Hanoi(n-1,B,A,C);
    }
};
/////////////////////////////////////Hanio()函数结束
2008-09-03 21:47
qqwuming
Rank: 1
等 级:新手上路
威 望:1
帖 子:48
专家分:0
注 册:2007-5-31
得分:0 
感谢回复

如何求解这段代码的递推式?????

2008-09-04 10:18
blueboy82006
Rank: 5Rank: 5
来 自:幻想世界
等 级:贵宾
威 望:16
帖 子:1227
专家分:57
注 册:2007-7-23
得分:0 
嗯,看出来了...是汉诺塔吧...

2008-09-04 12:24
geninsf009
Rank: 3Rank: 3
等 级:论坛游民
威 望:8
帖 子:613
专家分:95
注 册:2008-8-16
得分:0 
如果说你要看递推公式,可以看我代码里的注释,这就可以看出递推公式,

写递归代码就与高中数学里的递推数列类似,首先要给出第一项A1,这就好比递归结束的条件,

然后再去递推,当然,别误会,只是打个比方,递推和递归仍然是两个概念。

你可以自己画图理解我写的注释,已经很详细了...
2008-09-04 22:51



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




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

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