zoukankan      html  css  js  c++  java
  • 递归模式学习(recursion)

    所谓递归,就是方法调用自身。对于递归模式来说,要有一个出口来让递归结束,避免出现死循环。

    实例全排列:

    从n中拿出m个元素进行排列,当n==m时为全排列。

    利用递归就是:把n个元素轮流放入第一个位置,剩余位置全排列(等同于(n-1)全排列+剩余的元素)

    设置出口:当n-1等于1时说明递归到最后一个元素,回调。

     1 package com.zhanghaobo.arrangement;
     2 
     3 /**
     4  * @author Administrator
     5  *排列方法:轮流把数组中元素放入第一个位置,剩余元素全排列(递归),直至剩余元素为1,排列完成。
     6  *begin++当begin==end时说明递归到出口,返回
     7  */
     8 /**
     9  * @author Administrator
    10  *
    11  */
    12 public class ArrangementTest {
    13 
    14     public static void main(String[] args) {
    15         int[] nums=new int[]{1,2};
    16         arrangment(nums, 0, nums.length-1);
    17         
    18     }
    19     /**
    20      * @param a
    21      * @param begin
    22      * @param end
    23      * 将数组a中的从begin-end位置的元素全排列
    24      */
    25     public static void arrangment(int[] a,int begin,int end){
    26         
    27         if(end==begin){ 
    28             for(int b:a){
    29                 System.out.print(b);
    30             }
    31             System.out.println("");
    32             return;
    33         }
    34         else{
    35             //begin从0开始进行全排列直至begin==end;循环完成一轮后要恢复到原来数组的状态以便下个轮换
    36                 
    37             for(int i=0;i<=end;i++){
    38                 swap(a,begin, i);
    39                 arrangment(a,begin+1,end);
    40                 swap(a,begin,i);                    
    41             }
    42         }
    43     }
    44     
    45     /**
    46      * 其他位置上的元素轮流和begin位置互换,以便其他元素全排列
    47      */
    48     public static void swap(int[] a,int begin,int other){
    49         int temp=a[begin];
    50         a[begin]=a[other];
    51         a[other]=temp;
    52     }
    53 }
  • 相关阅读:
    2019-2020-1学期20192401《网络空间安全专业导论》第一周学习总结
    14201771010119穷吉
    13201771010119穷吉
    12穷吉201771010119
    11201771010119穷吉
    实验10穷吉201771010119
    实验九201771010119穷吉
    201771010119穷吉第八周
    七次201771010119穷吉
    实验六20177101010119穷吉
  • 原文地址:https://www.cnblogs.com/oldcownotGiveup/p/5368198.html
Copyright © 2011-2022 走看看