递归之汉诺塔

用C语言实现。

#include 
#include 

void hannuota(int n,char A,char B,char C);

void hannuota(int n,char A,char B,char C){
    /*
      如果是一个盘子,直接将盘子从A移动到C
    否则,先将A柱子上的n-1个盘子借助C移到B
      最后将B柱子上的n-1个盘子借助A移到C
    */
    if(n == 1){
        printf("将编号为%d的盘子直接从%c柱子移动到%c柱子\n",n,A,C);
    }else{
        hannuota(n-1,A,C,B);
        printf("将编号为%d的盘子直接从%c柱子移动到%c柱子\n",n,A,C);
        hannuota(n-1,B,A,C);
    }
}

int main()
{
    char ch1 = 'A';
    char ch2 = 'B';
    char ch3 = 'C';
    int n;

    printf("请输入要移动盘子的个数:\n");
    scanf("%d",&n);

    hannuota(n,'A','B','C');
    return 0;
}

你可能感兴趣的:(算法实现,递归)