#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,这样就可以写出递推的关系。
时间: 2024-10-11 21:49:27