汉诺塔问题(递归函数)

来源:互联网 发布:淘宝主播排名榜在哪看 编辑:程序博客网 时间:2024/05/17 02:58

题目: 有三根针A,B,C。A针上有N个盘子,大的在下,小的在上,要求把这N个盘子从A针移到C针,在移动

   过程中可以借助B针,每次只允许移动一个盘子,且在移动过程中在三根针上都保持大盘在下,小盘在上。

 

 

源程序:#include<iostream.h>

void move(char j,char k)
{
 cout<<j<<"移动到"<<k<<endl;
}

void hanoi(int i,char A,char B,char C)
{
 if(i==1)
  move(A,C);
 else
 {
  hanoi(i-1,A,C,B); //从A针移动到到B针
  move(A,C);       //从A针移动到C针
  hanoi(i-1,B,A,C);   //从B针移动到C针
 }
}


void main()
{
 int i;
 cout<<"请输入汉诺塔有几层:";
 cin>>i;
 hanoi(i,'A','B','C');
 
}

原创粉丝点击