`
cuker919
  • 浏览: 97663 次
  • 性别: 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字符串处理取出括号内的字符串

    在Java编程语言中,字符串处理是一项常见的任务,特别是在解析、分析或操作文本数据时。本篇文章将深入探讨如何从字符串中提取括号内的内容,主要关注于基础的字符串操作、正则表达式以及如何利用这些工具来实现目标...

    json字符串递归解析

    以下是一个简单的递归解析JSON字符串的例子: ```javascript function recursiveParse(jsonStr) { try { let jsonObj = JSON.parse(jsonStr); if (typeof jsonObj === 'object' && !Array.isArray(jsonObj)) { ...

    java 倒置字符串

    总结起来,Java中倒置字符串有多种方法,包括使用`StringBuilder`/`StringBuffer`、字符数组和递归。每种方法都有其优缺点,应根据具体需求和性能要求选择合适的方法。在实际编程中,`StringBuilder`通常是首选,...

    java算法递归字符

    在这个例子中,`countChar`函数接收一个字符串和一个字符作为参数,然后通过递归逐个检查字符串中的字符。每次调用都会减少字符串的长度,直到达到基本情况。这种方法虽然简洁,但效率并不高,因为它涉及多次字符串...

    java实现字符转换成十六进制的ASCII码

    在这个例子中,我们遍历输入字符串中的每一个字符,将字符转换为其对应的ASCII码整数,然后使用`Integer.toHexString()`方法将ASCII码转换为16进制字符串。最后,我们将结果打印出来。 递归在本问题中可能是指将较...

    链接任意多个字符串

    在上面的例子中,`mstrcat()`函数接收一个目标字符串`dest`,一个字符串指针数组`sources`,以及字符串的数量`count`,然后将所有字符串连接到`dest`的末尾。这种方法允许我们灵活地连接任意数量的字符串。 注意,...

    使用java处理字符串公式运算的方法

    `parse` 方法接收公式字符串、中间公式映射(`formulas`)和基础数据映射(`values`),首先递归地替换所有中间变量,然后进行后缀表达式的转换和计算。 以下是一个简化版的 `FormulaParser` 类的实现: ```java ...

    四则运算解析器(字符串)

    这个字符串需要被正确地分隔成数字和运算符,以便后续处理。 2. **词法分析**:也称为扫描或Tokenization,将输入的字符串分解成一个个的"标记",这些标记可以是数字或者运算符。例如,"2"、"+"、"3"、"*"等。 3. ...

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

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

    Java 实例 - 字符串反转源代码-详细教程.zip

    通过实践这些例子,你可以深入学习Java的内存管理、字符串操作以及基本数据结构和算法,这些都是Java程序员必备的基础知识。 本教程的详细代码和解释都包含在"Java 实例 - 字符串反转源代码-详细教程.rar"文件中,...

    java查找字符串中的包含子字符串的个数实现代码

    在这个例子中,`stringNumbers()`函数首先检查当前字符串是否包含"java"。如果包含,它将计数器加一,并递归调用自身,处理剩余的字符串部分(从"java"后一个字符开始)。这个过程会一直重复,直到字符串中不再有...

    java获取昨天日期字符串的方法

    在Java编程中,获取昨天日期字符串涉及到对日期和时间的操作,这通常需要用到`java.util`和`java.text`包中的类。以下是一个详细的解释和示例代码,展示如何实现这个功能。 首先,我们需要导入必要的库: ```java ...

    java递归实现N个数全排列输出

    在编程领域,全排列是一个经典的算法问题,它涉及到数组或字符串的所有可能的顺序组合。当给定一个包含N个不同元素的集合时,全排列就是要列出所有可能的N!(N的阶乘)种排列方式。在这个场景中,我们将探讨如何使用...

    用java实现的经典递归算法

    递归出口设置为当`low`等于`high`时,此时字符串只剩下一个元素,直接输出即可。在递归过程中,选择一个元素作为当前排列的第一个元素,然后对剩余元素继续递归,直到达到递归出口。每次递归调用前,通过交换元素来...

    解析json字符串封装成java对象.docx

    在Java编程中,将JSON字符串转换为Java对象是一项常见的任务,特别是在处理来自互联网的数据时。JSON(JavaScript Object Notation)是一种轻量级的数据交换格式,它易于人阅读和编写,同时也易于机器解析和生成。本...

    java代码-列出所有字符串中大小写的组合

    总的来说,这个Java代码解决了一个有趣的字符串处理问题,通过递归实现了所有大小写组合的生成。这种问题可以应用于多种场景,如密码生成、字符串搜索优化等。理解和掌握这种递归思想对于提升Java编程能力非常有帮助...

    字符串计算公式计算

    下面是一个简单的例子,展示了如何使用Java处理简单的字符串公式: ```java import java.util.Stack; public class StringCalculator { public static double calculate(String formula) { Stack<Double> values...

    Java字符串无意识的递归过程解析

    在Java编程中,字符串无意识的递归过程主要涉及到对象的`toString()`方法。这个方法是Java `Object`类的一个成员,用于返回表示对象状态的字符串。当我们在控制台打印一个对象时,如果不自定义`toString()`方法,...

    详解java生成json字符串的方法

    在Java编程中,生成JSON字符串是一项常见的任务,用于数据交换或存储。JSON(JavaScript Object Notation)是一种轻量级的数据交换格式,易于人阅读和编写,同时也易于机器解析和生成。在Java中,有多种库可以帮助...

    c语言连接两个字符串JavaWeb-m开发笔记

    2. `StringBuilder`/`StringBuffer`: 这两个类提供了`append()`方法,它们在内部维护一个字符数组,可以在不创建新对象的情况下进行字符串连接,尤其适用于循环或递归中的字符串操作。`StringBuffer`在多线程环境中...

Global site tag (gtag.js) - Google Analytics