标题:[求助] "汉诺塔问题“求解
只看楼主
aipb2007
Rank: 8Rank: 8
来 自:CQU
等 级:贵宾
威 望:40
帖 子:2879
专家分:7
注 册:2007-3-18
得分:0 
N=64用递归是不可能计算出来的

Fight  to win  or  die...
2007-10-22 19:14
eagleboycn
Rank: 1
等 级:新手上路
帖 子:191
专家分:0
注 册:2007-9-26
得分:0 
以下是引用aipb2007在2007-10-22 19:14:26的发言:
N=64用递归是不可能计算出来的

何解?
为什么?
能说明原因吗?
谢谢了


兵法的精要在于韬晦自己
2007-10-23 07:31
aipb2007
Rank: 8Rank: 8
来 自:CQU
等 级:贵宾
威 望:40
帖 子:2879
专家分:7
注 册:2007-3-18
得分:0 
你算算 2^64-1

就算有无限大的内存使用,时间也不够啊!

Fight  to win  or  die...
2007-10-23 10:34
eagleboycn
Rank: 1
等 级:新手上路
帖 子:191
专家分:0
注 册:2007-9-26
得分:0 
以下是引用aipb2007在2007-10-23 10:34:07的发言:
你算算 2^64-1

就算有无限大的内存使用,时间也不够啊!

也就是说理论上有结果
但是结果会接近无限长?
我用64运行过,等了1分多钟,看还在算,就没等了


兵法的精要在于韬晦自己
2007-10-23 16:41
xiaodong5800
Rank: 1
等 级:新手上路
帖 子:8
专家分:0
注 册:2010-3-5
得分:0 
#include<stdio.h>
void main()
{
int m;
void mana(int n,char one,char two,char three);
scanf("%d",&m);
mana(m,'A','B','C');
}
void mana(int n,char one,char two,char three)
{
void move(int no,char x,char y);
if(n==1)
move(n,one,three);
else
{
mana(n-1,one,three,two);
move(n,one,three);
mana(n-1,two,one,three);
}
void move(int no,char x,char y)
{
printf("Move disk %d from %c to %c",no,x,y);
printf("\n");
}
}
情不自禁自己也写了一个,不过和大家的差不多
2010-03-06 20:37



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




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

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