汉诺塔的递归问题
gzqldz9t32013.05.25
看书还是不怎么理解,当盘子为4个时候的,怎么移动,例子都是3个
1个回答
满意答案
把1号从a挪动到b
把2号从a挪动到c
把1号从b挪动到c
把3号从a挪动到b
把1号从c挪动到a
把2号从c挪动到b
把1号从a挪动到b
把4号从a挪动到c
把1号从b挪动到c
把2号从b挪动到a
把1号从c挪动到a
把3号从b挪动到c
把1号从a挪动到b
把2号从a挪动到c
把1号从b挪动到c
当为5个的时候移动方式
把1号从a挪动到c
把2号从a挪动到b
把1号从c挪动到b
把3号从a挪动到c
把1号从b挪动到a
把2号从b挪动到c
把1号从a挪动到c
把4号从a挪动到b
把1号从c挪动到b
把2号从c挪动到a
把1号从b挪动到a
把3号从c挪动到b
把1号从a挪动到c
把2号从a挪动到b
把1号从c挪动到b
把5号从a挪动到c
把1号从b挪动到a
把2号从b挪动到c
把1号从a挪动到c
把3号从b挪动到a
把1号从c挪动到b
把2号从c挪动到a
把1号从b挪动到a
把4号从b挪动到c
把1号从a挪动到c
把2号从a挪动到b
把1号从c挪动到b
把3号从a挪动到c
把1号从b挪动到a
把2号从b挪动到c
把1号从a挪动到c
这是根据程序得出的结果,可以采纳,你如果想知道程序也可以给你.....
#include <fstream>
#include <iostream>
using namespace std;
ofstream fout("out.txt");
void Move(int n,char x,char y)
{
fout<<"把"<<n<<"号从"<<x<<"挪动到"<<y<<endl;
}
void Hannoi(int n,char a,char b,char c)
{ if(n==1) Move(1,a,c);
else
{ Hannoi(n-1,a,c,b);
Move(n,a,c);
Hannoi(n-1,b,a,c);
}
}
int main()
{
fout<<"以下是5层汉诺塔的解法:"<<endl;
Hannoi(5,'a','b','c');
fout.close();
cout<<"输出完毕!"<<endl;
return 0;
}
这是c++的解决代码,还有C语言的你要不要???
把2号从a挪动到c
把1号从b挪动到c
把3号从a挪动到b
把1号从c挪动到a
把2号从c挪动到b
把1号从a挪动到b
把4号从a挪动到c
把1号从b挪动到c
把2号从b挪动到a
把1号从c挪动到a
把3号从b挪动到c
把1号从a挪动到b
把2号从a挪动到c
把1号从b挪动到c
当为5个的时候移动方式
把1号从a挪动到c
把2号从a挪动到b
把1号从c挪动到b
把3号从a挪动到c
把1号从b挪动到a
把2号从b挪动到c
把1号从a挪动到c
把4号从a挪动到b
把1号从c挪动到b
把2号从c挪动到a
把1号从b挪动到a
把3号从c挪动到b
把1号从a挪动到c
把2号从a挪动到b
把1号从c挪动到b
把5号从a挪动到c
把1号从b挪动到a
把2号从b挪动到c
把1号从a挪动到c
把3号从b挪动到a
把1号从c挪动到b
把2号从c挪动到a
把1号从b挪动到a
把4号从b挪动到c
把1号从a挪动到c
把2号从a挪动到b
把1号从c挪动到b
把3号从a挪动到c
把1号从b挪动到a
把2号从b挪动到c
把1号从a挪动到c
这是根据程序得出的结果,可以采纳,你如果想知道程序也可以给你.....
#include <fstream>
#include <iostream>
using namespace std;
ofstream fout("out.txt");
void Move(int n,char x,char y)
{
fout<<"把"<<n<<"号从"<<x<<"挪动到"<<y<<endl;
}
void Hannoi(int n,char a,char b,char c)
{ if(n==1) Move(1,a,c);
else
{ Hannoi(n-1,a,c,b);
Move(n,a,c);
Hannoi(n-1,b,a,c);
}
}
int main()
{
fout<<"以下是5层汉诺塔的解法:"<<endl;
Hannoi(5,'a','b','c');
fout.close();
cout<<"输出完毕!"<<endl;
return 0;
}
这是c++的解决代码,还有C语言的你要不要???
00分享举报
赞 (0)