`
cuker919
  • 浏览: 87747 次
  • 性别: Icon_minigender_1
  • 来自: 深圳
社区版块
存档分类
最新评论

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

分享到:
评论

相关推荐

    java关于字符串拼接的笔试题-practice:实践

    数组和字符串 * 滑动窗口问题 * ID:通常需要在较长的字符串中找到最短或最长的某个部分 * 有时从前面和后面开始(陷阱水),其他时候从前面和一英寸开始* 运行最大问题和线性 dp * ID:通常需要从整数数组中找到某...

    Java SE编程入门教程 String字符串(共27页).pptx

    Java SE编程入门教程 String字符串(共27页).pptx Java 位运算.docx java正则表达式例子大全 共10页.doc JAVA正则表达式实例教程 共17页.docx JAVA正则表达式实例教程 共17页.pdf 递归算法.docx 堆和栈.wps

    Java SE编程入门教程 java判断循环(共79页).ppt

    Java SE编程入门教程 String字符串(共27页).pptx Java 位运算.docx java正则表达式例子大全 共10页.doc JAVA正则表达式实例教程 共17页.docx JAVA正则表达式实例教程 共17页.pdf 递归算法.docx 堆和栈.wps

    Java SE编程入门教程 java泛型(共11页).pptx

    Java SE编程入门教程 String字符串(共27页).pptx Java 位运算.docx java正则表达式例子大全 共10页.doc JAVA正则表达式实例教程 共17页.docx JAVA正则表达式实例教程 共17页.pdf 递归算法.docx 堆和栈.wps

    Java SE编程入门教程 java序列化(共14页).pptx

    Java SE编程入门教程 String字符串(共27页).pptx Java 位运算.docx java正则表达式例子大全 共10页.doc JAVA正则表达式实例教程 共17页.docx JAVA正则表达式实例教程 共17页.pdf 递归算法.docx 堆和栈.wps

    java源码包---java 源码 大量 实例

     设定字符串为“张三,你好,我是李四”  产生张三的密钥对(keyPairZhang)  张三生成公钥(publicKeyZhang)并发送给李四,这里发送的是公钥的数组字节  通过网络或磁盘等方式,把公钥编码传送给李四,李四接收到...

    java 算法

    多线程的世界时钟,显示巴黎,罗马,上海时间, AWT界面,Java日期格式化及其使用例子,几个常用方法,判断字符是否属于中文,异常处理类,去掉字符串中重复的子字符串,将指定byte数组以16进制的形式打印到控制台,...

    Java递归求解数组里“数组合”

     给定一个字符串数组,数组中的元素各不相同,把一个数组里的“数组合”全部列出,比如1和2列出来为1,2,12,21.一共有4个“数组合”  输入描述:  第一行输入数为数组元素个数,第二行输入数组元素  输出...

    jvm-tail-recursion:Java字节码中的尾部递归调用的优化器库

    jvm-tail-递归在Java字节码上执行尾部递归优化的Java库。它只是将函数中的最终递归方法调用替换为goto到同一函数的开头。... }}列出字符串中的数字如果您想在字符串中使用数字序列:前后static String numbers( int n,

    Java SE编程入门教程 java GC(共6页).pptx

    Java SE编程入门教程 String字符串(共27页).pptx Java 位运算.docx java正则表达式例子大全 共10页.doc JAVA正则表达式实例教程 共17页.docx JAVA正则表达式实例教程 共17页.pdf 递归算法.docx 堆和栈.wps

    Java SE编程入门教程 java集合(共38页).pptx

    Java SE编程入门教程 String字符串(共27页).pptx Java 位运算.docx java正则表达式例子大全 共10页.doc JAVA正则表达式实例教程 共17页.docx JAVA正则表达式实例教程 共17页.pdf 递归算法.docx 堆和栈.wps

    Java SE编程入门教程 java数组(共33页).pptx

    Java SE编程入门教程 String字符串(共27页).pptx Java 位运算.docx java正则表达式例子大全 共10页.doc JAVA正则表达式实例教程 共17页.docx JAVA正则表达式实例教程 共17页.pdf 递归算法.docx 堆和栈.wps

    Java SE编程入门教程 java异常(共57页).pptx

    Java SE编程入门教程 String字符串(共27页).pptx Java 位运算.docx java正则表达式例子大全 共10页.doc JAVA正则表达式实例教程 共17页.docx JAVA正则表达式实例教程 共17页.pdf 递归算法.docx 堆和栈.wps

    Java SE编程入门教程 java instanceof(共3页).pptx

    Java SE编程入门教程 String字符串(共27页).pptx Java 位运算.docx java正则表达式例子大全 共10页.doc JAVA正则表达式实例教程 共17页.docx JAVA正则表达式实例教程 共17页.pdf 递归算法.docx 堆和栈.wps

    Java SE编程入门教程 java正则(共8页).pptx

    Java SE编程入门教程 String字符串(共27页).pptx Java 位运算.docx java正则表达式例子大全 共10页.doc JAVA正则表达式实例教程 共17页.docx JAVA正则表达式实例教程 共17页.pdf 递归算法.docx 堆和栈.wps

    Java SE编程入门教程 java线程(共61页).pptx

    Java SE编程入门教程 String字符串(共27页).pptx Java 位运算.docx java正则表达式例子大全 共10页.doc JAVA正则表达式实例教程 共17页.docx JAVA正则表达式实例教程 共17页.pdf 递归算法.docx 堆和栈.wps

    Java SE编程入门教程 java object(共9页).pptx

    Java SE编程入门教程 String字符串(共27页).pptx Java 位运算.docx java正则表达式例子大全 共10页.doc JAVA正则表达式实例教程 共17页.docx JAVA正则表达式实例教程 共17页.pdf 递归算法.docx 堆和栈.wps

    Java SE编程入门教程 java IO(共28页).pptx

    Java SE编程入门教程 String字符串(共27页).pptx Java 位运算.docx java正则表达式例子大全 共10页.doc JAVA正则表达式实例教程 共17页.docx JAVA正则表达式实例教程 共17页.pdf 递归算法.docx 堆和栈.wps

    Java SE编程入门教程 java接口(共21页).pptx

    Java SE编程入门教程 String字符串(共27页).pptx Java 位运算.docx java正则表达式例子大全 共10页.doc JAVA正则表达式实例教程 共17页.docx JAVA正则表达式实例教程 共17页.pdf 递归算法.docx 堆和栈.wps

    Java SE编程入门教程 java Math(共11页).pptx

    Java SE编程入门教程 String字符串(共27页).pptx Java 位运算.docx java正则表达式例子大全 共10页.doc JAVA正则表达式实例教程 共17页.docx JAVA正则表达式实例教程 共17页.pdf 递归算法.docx 堆和栈.wps

Global site tag (gtag.js) - Google Analytics