先贴代码,重点要理解递归函数的作用
#include <stdio.h>
int hanoi (int n , char x , char y , char z){//将n个盘子从x到z
if ( n == 1 ){
move( n , x , y , z ) ;
} else {
hanoi ( n-1 , x , z , y ) ;//先将 第n个盘子上面的所有n-1盘子挪到y上(不需要深究这n-1个盘子是怎么挪上去的,因为这是递归,只要有 n==1 这个终止条件就好了)
move (n , x , y ,z );//将第n个盘子从x挪到z上
hanoi ( n-1 , y , x ,z );//将第n个盘子上面的所有n-1盘子从y挪到z上
}
}
void move( int n , char x , char y ,char z ){
printf ( "%d %c->%c \n",n,x,z ) ;
}
int main (){
hanoi (9 , 'A' , ' B' ,' C') ;
return 0;
}
return 0;
}
看函数注释,你差不多就明白了;