#include<stdio.h>
void hanoi(int n,char A,char B,char C)/*n为积木的数量,ABC为三根柱子,A是起点,B是辅助点,C是终点*/ 
{
     if(n==1) 
    {
        printf("%c -> %c\n",A,C);/*只有一个盘子就直接A移动到C就好了*/ 
    }
    else
    {
        hanoi(n-1,A,C,B);/*把A中除了底部那块积木看成一个整体为n-1块,绕过C柱放到B*/ 
        printf("%c -> %c\n",A,C);/*把剩下的最底下的那块放到C上*/ 
        hanoi(n-1,B,A,C);/*把放到B上的n-1块在放到C上*/ 
    }
}
 int main()
 {
     hanoi(3,'A','B','C');
     return 0;     
 }

这个代码比较简单,主要通过改变n的值来改变积木的数量,从最少的两块开始理解,A>B,A>C,B>C,然后开始用递归的思想,把除了最底下的那一块积木看成整体,即为“1”为一个整体,“n-1”为一个整体,开始循环开始的步骤就ok了,这就是汉诺塔游戏最简单的一种表达。

 posted on 2019-05-12 13:17  Dopazt  阅读(74)  评论(0编辑  收藏  举报