汉诺塔01
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 | #include<stdio.h> void han( int n, char a, char b, char c) { if (n==1) { printf( "%c--%c\n" ,a,c); } else { han(n-1,a,c,b); printf( "%c--%c\n" ,a,c); han(n-1,b,a,c); } } int main() { int n; char a,b,c; a= 'A' ; b= 'B' ; c= 'C' ; scanf( "%d" ,&n); han(n,a,b,c); } |
我们将三根柱子分别命名为A,B,C,
当只有一个盘子的时候,是从A直接放到C上的;
当有两个盘子的时候,是A--B;
A--C;
B--C;
当有三个盘子的时候 是
A--C;
A--B
C--B
A--C
B--A
B--C
A--C
所以,当有n个盘子的时候,第n-1个盘子都是通过A--C--B,B--A--C,这样就可以写出递推的关系。
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】凌霞软件回馈社区,博客园 & 1Panel & Halo 联合会员上线
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步