数据结构(C)---汉诺塔随记

思路分析:

              将片按大小依次编号1,2,3可以n,由1到n号金片组成的塔高度为n的塔,可以看作是高度为n-1的塔下面压了一个大的金片n

            

#include <stdio.h>

vodi hanio(int  n, char a,char b,char c)

{

      if(n>0)

      {

              if(n==1)

              {

                    printf(“move %d from %c to %c \n” , n,a,b);       //若只有一片直接移

              }

      }else{

            hanio(n-1,a,c,b);                                                          //先将源柱子A的n-1片,移到柱子C(利用柱子B)

            printf(“move %d from %c to %c \n” , n,a,b);            //把A的片n移到B

            hanio(n-1,c,b,a);                                                         //把C的n-1片移到B(利用柱子A)

     }

int   main()

{

    int         n;

   printf(“请输入汉诺塔的层数:”);

   scanf(“%d” , &n);

   hanio(n,’A’,’B’,’C’);

   return  0;

}

  参考书:数据结构 C 语言

    原文作者: 汉诺塔问题
    原文地址: https://blog.csdn.net/Simple_Bottle/article/details/25835167
    本文转自网络文章,转载此文章仅为分享知识,如有侵权,请联系博主进行删除。
点赞