汉诺塔问题---- 递归类型 之 非数值类型

递归类型大致方向有两种,第一是数值计算的(兔子数列)(可以用矩阵加快速幂优化),第二是文字非纯数据的(汗诺塔)

递归时。,只需考虑一步和周期间的(打 × 处)

(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;
}
   

原文地址:https://www.cnblogs.com/tinyork/p/3438117.html