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);
}
}
按照递归的三个条件来分析:
二、字符串递归例子
//获取用户组(包括父组的字符串)
//获取字符串组装放到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' 。
流程也跟数字例子一样,先一层一层往下走,最后最下层往上一层一层返回。
下面是递归概念说明:
解释:程序调用自身的编程技巧叫做递归。