汉诺塔问题

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

汉诺塔问题
递归调用的内部执行过程:
1.运行开始时,首先为递归调用建立一个工作栈,其结构包括值参,局部变量,和返回地址;
2.每次执行递归调用之前,把递归函数的值参和局部变量的当前值及调用后的返回地址入栈;
3.每次递归调用结束后,将栈顶元素出栈,使相应的值参和局部变量恢复为调用前的值,然后转向返回地址指定的位置继续执行。

#include <iostream>
using namespace std;
void Move(char A,char C);
void Hanoi(int n,char A,char B,char C);
void main()
{
cout<<"***************汉诺塔问题***************"<<endl;
int n;
cout<<"输入塔A上原始盘子的数目:";
cin>>n;
cout<<"^^^^^^^^^^^^^^^^^具体移动过程如下:"<<endl;
Hanoi(n,'A','B','C');
}
void Move(char A,char C)
{
cout<<A<<"--->"<<C<<endl;
}
void Hanoi(int n,char A,char B,char C)
{
if(n==1)
Move(A,C);
else
{
Hanoi(n-1,A,C,B);
Move(A,C);
Hanoi(n-1,B,A,C);
}
}。

相关文档
最新文档