C++语言程序设计

程序：
显然这是一个递归过程，据此算法可编程如下：

| 例7-21

#include <iostream.h>
void move(int n,int x,int y,int z)
{
char c1=x,c2=z;
if(n==1)
cout<< c1<<"-->"<< c2<<endl;
else{
move(n-1,x,z,y);
cout<< c1<<" -->"<< c2<<endl;
move(n-1,y,x,z);
}
}
void main()
{
int h;
cout<<"input number:"<<endl;
cin>>h;
cout<<"the step to moving "<<h<<" diskes:"<<endl;
move(h,'a','b','c');
}

从程序中可以看出：move函数是一个递归函数，它有四个形参n、x、y、z。n表示圆盘数，x、y、z分别表示三根针。move 函数的功能是把x上的n个圆盘移动到z 上。当n==1时，直接把x上的圆盘移至z上，输出x→z。如n!=1则分为三步：递归调用move函数，把n-1个圆盘从x移到y；输出x→z；递归调用move函数，把n-1个圆盘从y移到z。在递归调用过程中n=n-1，故n的值逐次递减，最后n=1时，终止递归，逐层返回。当n=4 时程序运行的结果为：
input number:
4↙
the step to moving 4 diskes:
a→b
a→c
b→c
a→b
c→a
c→b
a→b
a→c
b→c
b→a
c→a
b→c
a→b
a→c
b→c