永发信息网

有关递归哈诺塔的编程问题

答案:2  悬赏:80  手机版
解决时间 2021-08-11 06:24
  • 提问者网友:我是我
  • 2021-08-10 22:20

一下代码希望能帮我找找错误 , 谢谢啦。。

 

#include<iostream.h>
int step=1;
void move(int,char,char,char);

void main()
{
 char a,b,c;
 int n;
 cout<<"请输入盘数n="<<endl;
 cin>>n;
 cout<<"在三根柱子上移"<<n<<"只盘子的步骤为"<<endl;
 move(n,a,b,c);
}

void move(int m,char p,char q,char r)
{
 if (m==1)
 {
  cout<<"["<<step<<"]move 1# from"<<p<<"to"<<r<<endl;
  step++;
 }
 else
 {
  move(m-1,p,r,q);
  cout<<"["<<step<<"]move"<<m<<"# from"<<p<<"to"<<r<<endl;
     step++;
  move(m-1,q,p,r);
 }
}

最佳答案
  • 五星知识达人网友:有你哪都是故乡
  • 2021-08-10 23:27


#include<iostream.h>
int step=1;
void move(int,char,char,char);


void main()
{
 char a='a',b='b',c='c';
 int n;
 cout<<"请输入盘数n="<<endl;
 cin>>n;
 cout<<"在三根柱子上移"<<n<<"只盘子的步骤为"<<endl;
 move(n,a,b,c);
}


void move(int m,char p,char q,char r)
{
 if (m==1)
 {
  cout<<"["<<step<<"]move 1# from "<<p<<" to "<<r<<endl;
  step++;
 }
 else
 {
  move(m-1,p,r,q);
  cout<<"["<<step<<"]move"<<m<<"# from "<<p<<" to "<<r<<endl;
     step++;
  move(m-1,q,p,r);
 }
}

全部回答
  • 1楼网友:老鼠爱大米
  • 2021-08-10 23:45

在MOVE函数就将p q r;初始化一下,就是标记一下。如p='A';q='B',r='C';如果不初始化编译器就不知道就会乱分配。

#include<iostream.h> int step=1; void move(int,char,char,char);

void main() {  char a,b,c;  int n;  cout<<"请输入盘数n="<<endl;  cin>>n;  cout<<"在三根柱子上移"<<n<<"只盘子的步骤为"<<endl;  move(n,a,b,c); }

void move(int m,char p,char q,char r) {  p='A';  q='B';  r='C';  if (m==1)  {   cout<<"["<<step<<"]move 1# from"<<" "<<p<<" "<<"to"<<" "<<r<<" "<<endl;   step++;  }  else  {   move(m-1,p,r,q);   cout<<"["<<step<<"]move"<<m<<"# from"<<" "<<p<<" "<<"to"<<" "<<r<<" "<<endl;      step++;   move(m-1,q,p,r);  } }

我要举报
如以上回答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
点此我要举报以上问答信息
大家都在看
推荐资讯