1 / 2
文档名称:

汉诺塔--递归.doc

格式:doc   大小:29KB   页数:2页
下载后只包含 1 个 DOC 格式的文档,没有任何的图纸或源代码,查看文件列表

如果您已付费下载过本站文档,您可以点这里二次下载

分享

预览

汉诺塔--递归.doc

上传人:Bonnacon 2021/12/29 文件大小:29 KB

下载得到文件列表

汉诺塔--递归.doc

相关文档

文档介绍

文档介绍:// : 定义控制台应用程序的入口点。
//
#include ""
#include<iostream>//
using namespace std;
/*
n个盘子并依次标号为1,2,3,...n,标号越大尺寸越大;‘A’‘B’‘C’表示三个位置,
初始时,n个盘子放在‘A’地,并且最底层的盘子是最大的,往上依次变小,要求
把n个盘子从‘A’移到‘C’,使得,n个盘子在‘C’处,也是最底层的盘子为最大的,
往上依次减小,切过程中严格遵循“大的在下,小的在上”
*/
void move(int n1,char a1,char c1)
{
static int step=1;//静态变量,每一次用,都保持着在上一次值的基础上再用
cout<<"第"<<step<<"步:"<<"盘子"<<n1<<"从"<<a1<<"地移到"<<c1<<"地"<<endl;
step++;
}
void hanoi(int n,char a,char b,char c)//n表示盘子个数;a,b,c表示三个位置对应的变量;在此只是在逻辑上认为盘子移动了,并且用位置移动来表达盘子移动的事实,注意与现实操作事物的区别
{
if(n>1)
{
hanoi(n-1,a,c,b);//调用自身;传递参数的变化,已经是开始移动工作了;先从‘A’位置通过‘C’位置移到‘B’位置
move(n,a,c);//真实移动--a,b,三个参数在传递过程中是变化的,相对而言,--同一级函数中看“变量本身”;不同级函数间看“位置”
hanoi(n-1,b,a,c);//调用自身;传递参数的变化,已经是开始移动工作了;先从‘B’位置通过‘A’位置移到‘C’位置
}