注册 登录
编程论坛 C++教室

Hanoi实现怎么错了

diaoxue 发布于 2007-10-22 23:52, 530 次点击
#include<iostream.h>
void Move(int n,char l,char k);
void Hanoi(int n,char a,char b,char c);
int main()
{
int n;
char A,B,C;
cout<<"input n:"<<endl;
cin>>n;
Hanoi(n,A,B,C);
return 0;
}
void Move(int n,char l,char k)
{
cout<<n<<l<<"->"<<k<<endl;
}
void Hanoi(int n,char a,char b,char c)
{
char A,B,C;
if(n==1)
Move(1,A,B);
/*if(n<=0)
cout<<"Error!!!"<<endl;
else*/
if(n>0)
Hanoi(n-1,A,C,B);
Move(n,A,B);
Hanoi(n-1,C,B,A);
}
算法应该没问题了
4 回复
#2
eagleboycn2007-10-23 07:34

^_^我刚刚问过这个问题
这是 “六道”老兄的程序,看看吧:
#include <iostream>
using namespace std;
void move(char x,char y)
{
cout<<x<<"-->"<<y<<endl;
}
void hanoi(int n,char one,char two,char three)
{
if(n==1) move(one,three);
else
{
hanoi(n-1,one,three,two);
move(one,three);
hanoi(n-1,two,one,three);
}
}

int main()
{
int N;
cout<<"input the unmber of diskes:"<<endl;
cin>>N;
cout<<"the step to moving "<<N<<" diskes:"<<endl;
hanoi(N,'A','B','C');
return 0;
}

#3
eagleboycn2007-10-23 07:38
看上去
void Hanoi(int n,char a,char b,char c)
这一句里面的三个变量 a,b,c
没有在Hanoi函数里面出现啊
那三个if ,还有
/*if(n<=0)
cout<<"Error!!!"<<endl;
else*/
是什么意思啊?
#4
diaoxue2007-10-23 08:46

哦,是啊 ,谢啊
那不注释了吗

#5
diaoxue2007-10-23 15:49

最后的if后是一个语句块
搞定

1