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

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值