递归类型大致方向有两种,第一是数值计算的(兔子数列)(可以用矩阵加快速幂优化),第二是文字非纯数据的(汗诺塔)
递归时。,只需考虑一步和周期间的(打 × 处)
(1 2 3 1 2 3)
× × ×
#include<stdio.h>
int n;
void hanoi(int n,char a,char b,char c)
{
if(n==1) printf("%d from %c to %c
",n,a,c);
else
{
hanoi(n-1,a,c,b); //把n-1个盘移到B中后
printf("%d from %c to %c
",n,a,c);//移到C盘中
hanoi(n-1,b,a,c);//A B盘地位交换了
}
}
int main()
{
scanf("%d",&n);
printf("%d
",(1<<n)-1);
hanoi(n,'A','B','C');
return 0;
}