汉诺塔的递归问题

gzqldz9t32013.05.25

看书还是不怎么理解,当盘子为4个时候的,怎么移动,例子都是3个

gzqldz9t3

采纳率:53%    等级:11

已帮助:16112

私信TA向TA提问
1个回答
满意答案

question525

2013.05.25

question525

采纳率:53%    等级:12

已帮助:10016

私信TA向TA提问
把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语言的你要不要???
00分享举报
(0)

相关推荐