zoukankan      html  css  js  c++  java
  • Ka的递归编程练习 Part4|Hanoi汉诺塔,双色汉诺塔的也有

     1 #include <stdio.h>
     2 void hanoi(int s,char a,char b,char c)  //a是出发盘,b是中途盘,c是结束盘 
     3 {
     4     if(s==0) return;
     5     hanoi(s-1,a,c,b);  //把最底下的从a借助c移动到b
     6     printf("%d from %c move to %c
    ",s,a,c);
     7     hanoi(s-1,b,a,c);  //把刚才弄到b的借助a叠到c上 
     8 }
     9 int main()
    10 {
    11     int s=5;   //这里是盘子数,随便改,用scanf也可以
    12     char a='A',b='B',c='C';
    13     hanoi(s,a,b,c);
    14     return 0;
    15 }

    题目的话搜一下就好啦,到处都有的。

    s=0的时候自然终止程序。

    分析:

    比如一个4阶的汉诺塔

    1

    2

    3

    4

    a      b      c

    第一步:把冰箱门打开

                 1

                 2

    4           3

    a           b            c

    第二步:把大象放进去(在这一步输出步骤)

               1

               2

               3           4

    a          b          c

    第三步:把冰箱门关上

                             1

                             2

                             3

                             4

    a          b           c

    然而把冰箱门打开和关上怎么做呢?这就是递归部分中调用自身的部分了。具体见代码吧!

    双色的代码也如此,因为实际操作会发现,同种颜色的盘子叠在一起的情况是不存在的,所以代码一样。

  • 相关阅读:
    第八周作业
    第八周上机练习
    第七周上机练习
    第六周作业
    第六周上机练习
    第五周上机练习
    第四周作业
    第四次上机作业
    第三周作业
    第一次上机作业
  • 原文地址:https://www.cnblogs.com/KakagouLT/p/4490707.html
Copyright © 2011-2022 走看看