#include<stdio.h>
void hanoi(int n,char a,char b,char c);
int main()
{
int n;
scanf("%d",&n);
hanoi(n,'a','b','c');
return 0;
}
void hanoi(int n,char a,char b,char c)
{
if(n==1)
{
printf("%c-->%c\n",a,b);
}
else
{
hanoi(n-1,a,c,b);
printf("%c-->%c\n",a,b);
hanoi(n-1,c,b,a);
}
}
为啥在main函数中的 hanoi(n,'a','b','c'); a,b,c,需要加单引号,而hanoi函数中的 hanoi(n-1,a,c,b); a,b,c不需要加单引号?
main函数中的 hanoi(n,'a','b','c'); 的a,b,c,需要加单引号是因为void hanoi(int n,char a,char b,char c)中的参数char a,char b,char c是char型
void hanoi(int n,char a,char b,char c)函数中是一个递归,hanoi(n-1,a,c,b);里面的a,b,c就是char型的形参
main函数中的
hanoi(n,'a','b','c');
可以看成
char c1 = 'a', c2 = 'b', c3 = 'c';
hanoi(n,c1,c2,c3);
因为主函数中的是常量,函数里括号里面的a b c代表的是未知数,就是变量。变量直接用,常量字符才需要加单引号