zoukankan      html  css  js  c++  java
  • 今天学了递归,感觉好复杂啊/(ㄒoㄒ)/~~

      honio塔思路:

    第一步 把A上的n-1个圆盘借助C移到B上;
    第二步 把A上的一个圆盘移到C上;
    第三步 把B上的n-1个圆盘借助A移到C上。
    这显然符合递归的两个条件:
    ①具备边界条件:只有1个盘子时,直接移动;
    ②能把原问题的规模变小,变成原问题的子问题:移动n个盘子转化成了移动n-1个盘子。
    下面用函数来描述这为递归过程。
    该函数只是移动盘子的过程,不需要返回值。
    把A上的n(>=2)个圆盘借助A移到C上,要描述这个过程,函数需要明确哪根柱上多少个盘子借助哪根柱子移到哪根柱上,所以需要四个参数才能描述清楚。
        程序:
         #include<stdio.h>
    void h(int a,char A,char B,char C)
    {
     if(a==1)
     {
      printf("%c->%c ",A,C);
     }
     else
     {
      h(a-1,A,C,B);
      printf("%c->%c ",A,C);
      h(a-1,B,A,C);
     }
    }
    int main()
    {
     int n;
     scanf("%d",&n);
     h(n,'A','B','C');
     return 0;
    }         
              

                    

                       
     

                           

                       
         

                    

                       
     

                           

                       
     

                    

                       
              

                           

                       
              

                    

                       
              

                                   

                       
     
                       
         

                           

                       
         
         

                    

                  
         
       
                  
     

                           

                       
              

                    

                       
              

                                  

                   
            

              

           
     

      

  • 相关阅读:
    查看PL/SQL编译时的错误信息
    Oracle字符集的查看查询和Oracle字符集的设置修改
    关于数字货币 韩国似乎在下一盘大棋
    上传图片如何对图片进行压缩canvas
    socket应用(vue、node.js、M站)
    web前端学习python之第一章_基础语法(二)
    从零开始 —— Canvas(一)
    前端必备之Node+mysql+ejs模版如何写接口
    浏览器缓存机制
    前端实现数组去重,如何高效快捷?
  • 原文地址:https://www.cnblogs.com/FUCK1320816225/p/5650871.html
Copyright © 2011-2022 走看看