c语言 递归 局部变量的问题

guoyongchen 发布于 2013/05/31 12:16
阅读 198
收藏 0

#include<stdio.h>
void printdisk(int n,char x, char y){
printf("%d %c------------>%c\n",n,x,y);
}
void hanoi(int n,char a,char b,char c ){

if(n == 1){
printdisk(n,a,c);
}else{

hanoi(n-1,a,c,b);
       // printf("%d  ",n);
printdisk(n,a,c);
    hanoi(n-1,b,a,c);
}
}
int main(){
setvbuf(stdout,NULL,_IONBF,0);
printf("Input n:\n");
int n;
scanf("%d",&n);
hanoi(n,'A','B','C');
return 0;
}

为啥第一次输出A------------>C而不是A------------>B

以下是问题补充:

@guoyongchen:n == 3 (2013/05/31 13:23)
加载中
0
鸡挨踢爱噢Shit
鸡挨踢爱噢Shit
#include<stdio.h>
void printdisk(int n,char x, char y){
printf("%d %c------------>%c\n",n,x,y);
}
void hanoi(int n,char a,char b,char c ){

if(n == 1){
printdisk(n,a,c);
}else{

hanoi(n-1,a,c,b);
       // printf("%d  ",n);
printdisk(n,a,c);
    hanoi(n-1,b,a,c);
}
}
int main(){
setvbuf(stdout,NULL,_IONBF,0);
printf("Input n:\n");
int n;
scanf("%d",&n);
hanoi(n,'A','B','C');
return 0;
}
0
Floyd_W
Floyd_W
#include<stdio.h>
void printdisk(int n,char x, char y){
     printf("%d %c------------>%c\n",n,x,y);
}
void hanoi(int n,char a,char b,char c ){

     if(n == 1){
	  printdisk(n,a,c);
     }else{

	  hanoi(n-1,a,c,b);
	  // printf("%d  ",n);
	  printdisk(n,a,c);
	  hanoi(n-1,b,a,c);
     }
}
int main(){
     setvbuf(stdout,NULL,_IONBF,0);
     printf("Input n:\n");
     int n;
     scanf("%d",&n);
     hanoi(n,'A','B','C');
     return 0;
}
返回顶部
顶部