zoukankan      html  css  js  c++  java
  • 8、递归的两个案例

     1 package ren.laughing.datastructure.Instance;
     2 /**
     3  * 递归案例
     4  * @author Laughing_Lz
     5  * @time 2016年4月13日
     6  */
     7 public class RecuisionInstace {
     8     /**
     9      * 汉诺塔问题
    10      * 结束条件:当只有一个棋盘时候从x移动到z
    11      * n个棋盘可看作:将n-1个棋盘借助z从x挪到y上
    12      * 然后将x上最下面的棋盘挪到z上
    13      * 再将n-1个棋盘借助x从y挪到z上
    14      * @param n 棋盘数
    15      * @param x 起始点
    16      * @param y 过渡点
    17      * @param z 落脚点
    18      */
    19     public void hanio(int n,char x,char y,char z){
    20         if(n == 1){
    21             System.out.println("从"+x+"挪到"+z);
    22         }else{
    23             hanio(n-1, x, z, y);
    24             System.out.println("从"+x+"挪到"+z);
    25             hanio(n-1, y, x, z);
    26         }
    27     }
    28     /**
    29      * n位布尔型数的可能组合
    30      * 结束条件:若已递归到n为0时候,对m[0]赋值,再打印产生的组合
    31      * @param m 存放可能产生的组合
    32      * @param n n为m数组的下标最大值
    33      */
    34     public void coding(int[] m,int n){
    35         if(n == 0){
    36             m[n] = 0;
    37             for (int i=0;i<m.length;i++)
    38                 System.out.print(m[i]);
    39                 System.out.println();
    40             m[n] = 1;
    41             for (int i=0;i<m.length;i++)
    42                 System.out.print(m[i]);
    43                 System.out.println();
    44         }else{
    45             m[n] = 0;coding(m, n-1);//先对第m[n]位赋值为0,继续递归
    46             m[n] = 1;coding(m, n-1);//结束后再对m[n]位赋值为1,继续递归
    47         }
    48     }
    49     public static void main(String[] args) {
    50         RecuisionInstace r  = new RecuisionInstace();
    51         r.hanio(4, 'x', 'y', 'z');
    52         r.coding(new int[3], 2);
    53     }
    54 }
    —————————————————————————————————————行走在人猿的并行线——Laughing_Lz
  • 相关阅读:
    jquery动画效果---animate()--滚屏
    一个前端的自我修养
    开发和测试
    jquery.find()
    c99和c++11的差异之一
    容器经典图
    C/C++中的##用法
    【心学.悟道】千圣皆过影,良知乃吾师
    memcpy, memset代码改写的方式
    三大软件原则
  • 原文地址:https://www.cnblogs.com/Laughing-Lz/p/5385973.html
Copyright © 2011-2022 走看看