#include<stdio.h> void hanoi(int n,char A,char B,char C)/*n为积木的数量,ABC为三根柱子,A是起点,B是辅助点,C是终点*/ { if(n==1) { printf("%c -> %c ",A,C);/*只有一个盘子就直接A移动到C就好了*/ } else { hanoi(n-1,A,C,B);/*把A中除了底部那块积木看成一个整体为n-1块,绕过C柱放到B*/ printf("%c -> %c ",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了,这就是汉诺塔游戏最简单的一种表达。