zoukankan      html  css  js  c++  java
  • java 递归(字符串、数字)例子

          今天无聊写一下递归算法,好久没用也忘了,刚好记下来,下次直接look。


    一、数字例子

    下面是一个计算5的阶乘(result = 5*4*3*2*1=120)

    public class Test01 {

        /**
         * @param args
         */
        public static void main(String[] args) {
            System.out.println(f(5));

        }

         public static int f(int n) {  
                if (1 == n)  
                    return 1;  
                else   
                    return n * f(n-1);  
         }
    }


    按照递归的三个条件来分析:

    (1)边界条件:阶乘,乘到最后一个数,即1的时候,返回1,程序执行到底;
    (2)递归前进段:当前的参数不等于1的时候,继续调用自身;
    (3)递归返回段:从最大的数开始乘,如果当前参数是5,那么就是5*4,即5*(5-1),即n*(n-1),一直往回乘5*4*3*2*1。


    二、字符串递归例子


        //获取用户组(包括父组的字符串)

       //获取字符串组装放到sql: in(codes)条件里面

       private String getCode(String code){
            if(StringUtils.isBlank(code)){
                return code;
            }else{
                Group group = dao().fetch(Group.class, code);
                if(group != null && StringUtils.isNotBlank(group.getParentCode()) && !"0".equals(group.getParentCode())){
                    String tmp = "'"+code+"',"+getCode(group.getParentCode());
                    return tmp;
                }
                return "'"+code+"'";
            }
        }
        
        public static void main(String[] args){   
            System.out.println(getCode("qiantai"));
        }

    比如有前台用户组qiantai,其父组为行政xingz,

                行政的用户组xingz,其父组为子公司subcom,

    查询流程:qiantai--》xingz--》subcom。

    返回刚好往回走:先返回'subcom',接着,返回'xingz','subcom',最后返回'qiantai','xingz','subcom'  。


    流程也跟数字例子一样,先一层一层往下走,最后最下层往上一层一层返回。


    下面是递归概念说明:

    解释:程序调用自身的编程技巧叫做递归。

    程序调用自身的编程技巧称为递归( recursion)。递归做为一种算法在程序设计语言中广泛应用。 一个过程或函数在其定义或说明中有直接或间接调用自身的一种方法,它通常把一个大型复杂的问题层层转化为一个与原问题相似的规模较小的问题来求解,递归策略只需少量的程序就可描述出解题过程所需要的多次重复计算,大大地减少了程序的代码量。递归的能力在于用有限的语句来定义对象的无限集合。
     
    递归的三个条件:
    边界条件
    递归前进段
    递归返回段
    当边界条件不满足时,递归前进;当边界条件满足时,递归返回。

    版权声明:本文为博主原创文章,未经博主允许不得转载。

  • 相关阅读:
    Delphi通过调用COM对象实现更改桌面壁纸
    Delphi之TDrawGrid绘制
    Delphi中的消息截获(六种方法:Hook,SubClass,Override WndProc,Message Handler,RTTI,Form1.WindowProc:=@myfun)good
    从一般管理原则看微软的重组
    Delphi使用Windows API函数AnimateWindow实现窗体特效
    Delphi下URL汉字编码解码的两个函数
    Delphi2007下CIS的clHttp使用
    Delphi使用XmlHttp获取时间
    提升进程权限为DEBUG权限
    VS 2012 单元测试简单配置
  • 原文地址:https://www.cnblogs.com/cuker919/p/4878507.html
Copyright © 2011-2022 走看看