hannoi问题

来源:百度知道 编辑:UC知道 时间:2024/06/28 09:22:44
就是hannoi的问题,理解上面没有什么问题,主要是一个细节的地方
hannoi(7,'a','b','c')这样调用hannoi函数没有问题
但是我是char a,b,c;hannoi(7,a,b,c)这样就会有warning而且不能运行
我想我一定是概念不清楚,希望大虾们不吝赐教……orz
#include<iostream>
using namespace std;
int i=0;
int main()
{
cout<<"以下是7位hannoi的步骤"<<endl;
int hannoi(int,char,char,char);
hannoi(7,'a','b','c');
cout<<"共"<<i<<"步骤"<<endl;
system("pause");
return 0;
}
int move(int n,char a,char b)
{
cout<<"move"<<' '<<n<<' '<<"from"<<' '<<a<<' '<<"to"<<' '<<b<<endl;
i++;
return 0;
}
int hannoi(int n,char a,char b,char c)
{
if(n==1) move(1,a,c);
else
{
hannoi(n-1,a,c,b);
move(n,a,c);

你加的这句char a;//a是一个变量,你没有给他初始化,当然要warning你
hannoi(n,'a','b','c');//'a'是一个字符值,作为实参赋值给函数int hannoi(int n,char a,char b,char c)中的char a
//'a''b''c'只不过是一个名字而已,只不过变量和值的关系碰巧是a="a",于是你糊涂了。不妨把函数写成int hannoi(int n,char x,char y,char z)你就清醒了
//加一句char a,b,c;是不会出错的,只不过变量a,b,c不曾在程序里用到

a b c三个是char型的变量,你调用前没有初始化
char a,b,c;
a='x';
b='y';
c='z';
hannoi(7,a,b,c);