汉诺塔

输入n表示盘子的个数,只能小的在上,大的在下,求将第一个移到第三个的移法

#include <stdio.h>   
int main()  
{  
  void hanoi(int n,char one,char two,char three);         // 对hanoi函数的声明    
  int m;  
  printf("input the number of diskes:");  
  scanf("%d",&m);  
  printf("The step to move %d diskes:\n",m);  
  hanoi(m,'A','B','C');  
}  
  
void hanoi(int n,char one,char two,char three)          // 定义hanoi函数     
    // 将n个盘从one座借助two座,移到three座    
 {  
  void move(char x,char y);       // 对move函数的声明    
  if(n==1)  
     move(one,three);  
  else  
    {  
     hanoi(n-1,one,three,two);  
     move(one,three);  
     hanoi(n-1,two,one,three);  
    }  
 }  
  
 void move(char x,char y)           //  定义move函数    
 {  
   printf("%c-->%c\n",x,y);  
 }  

 

posted @ 2012-12-27 13:25  再见~雨泉  阅读(138)  评论(0编辑  收藏  举报