//汉诺塔的问题 // 从一步一步的问题分析得来 #include <stdio.h> #include<string.h> void move(char a,char b); void Hanoi(int ,char start,char bridge ,char end ); int main() { int n; scanf("%d",&n); Hanoi(n,'A','B' ,'C' ); return 0; } void Hanoi(int n ,char start,char bridge ,char end ) { if(n==1) { printf("%c---> %c/n",start,end); return ; } //要想从start 移动到end 那么久必须吧n-1个盘子从start 移到 bridge Hanoi(n-1,start,end,bridge); // 移动第N的盘子 从start 移动到end move(start,end); // bridge 中n-1个盘子从bridge 移动到end Hanoi(n-1,bridge,start,end); } void move(char a,char b) { printf("%c---> %c/n",a,b); } 典型的递归解法 记得刚开始学C的时候做这道题总是执着于他的过程 ,而没有他的思想 ,后来学了算法,无意想到,理所应当解出来了,