Java递归调用实例

private int num=0;

private String parentCode = null;

private String returnCode = null;

/**

* 查询顶级外场,如果当前部门的上级部门一直是外场,那就返回最顶层的orgcode,如果一直不是外场,就返回最初的orgcode,

* 如果中间有一个是外场,并且它的父级部门不是外场,就返回是外场的部门code。。然后根据returnCode查找这个部门下的所有部门

* sql中主要使用where--contact--with来递归查找

* @author 272343 吴丽丽

* @param

* @date 2017-6-12

* @return

*/

@Override

public String queryCenterOrSales(

String orgcode) {

// TODO Auto-generated method stub

if (num == 0){

DivisionDepartmentEntity parentEntity = queryParent(orgcode);

parentCode = parentEntity.getParentOrgCode();

//System.out.println("初始值,parentCode" + parentCode);

//设定初始returnCode

returnCode = orgcode;

//System.out.println("初始值,orgcode" + orgcode);

}

//最多向上查询五次

if(num<5){

//查看当前部门的上层部门信息

DivisionDepartmentEntity parent=queryParent(parentCode);

num=num+1;

System.out.println("查询第n次" + num);

//如果上层部门是外场,TransferCenter是t_bas_org表中是否为外场的字段

if("Y".equals(parent.getTransferCenter())){

//获得parentCode值,用于下一轮查询的参数值

parentCode=parent.getParentOrgCode();

//System.out.println("是外场,parentCode" + parentCode);

//给returunCode重新赋值

returnCode=parent.getCode();

//System.out.println("是外场,returnCode" + returnCode);

}else{

//如果不是外场,要判断是否是第一次查询,如果不是第一次,就返回returnCode,结束程序

if(!returnCode.equals(orgcode)&&num!=1){

//System.out.println("不是外场,returnCode" + returnCode);

return returnCode;

}

}

//函数递归调用,调用函数本身

queryCenterOrSales(parentCode);

}

//如果一直是外场,在最顶层,返回最终被赋值的外场值

return returnCode;

}

时间: 2024-10-22 07:19:18

Java递归调用实例的相关文章

java——递归调用

递归调用是调用自身的函数,并传给自身的相应的参数,这一运算过程是一层层的进行的,直到满足一定条件时,才停止调用. 递归函数的特点 1.函数要直接或间接调用自身. 2.要有递归终止条件检查,即递归终止的条件被满足后,则不再调用自身函数. 3.如果不满足递归终止的条件,则调用涉及递归调用的表达式.在调用函数自身时,有关终止条件的参数要发生变化,而且需向递归终止的方向变化. 举例: 计算5的阶乘? public class TestWudejiecheng { public static void m

axis2 webservice入门知识(JS,Java,PHP调用实例源码)

背景简介 最近接触到一个银行接口的案子,临时需要用到axis2 webservice.自己现学现总结的一些东西,留给新手.少走弯路. Axis2简介 ①采用名为 AXIOM(AXIs Object Model)的新核心 XML 处理模型,利用新的XML解析器提供的灵活性按需构造对象模型. ②支持不同的消息交换模式.目前Axis2支持三种模式:In-Only.Robust-In和In-Out.In-Only消息交换模式只有SOAP请求,而不需要应答:Robust-In消息交换模式发送SOAP请求,

Java递归调用

6.递归调用 方法的递归调用就是方法自身调用自身. 以下程序因为递归没有结束的条件,所以一直压栈,没有弹栈,导致栈内存溢出错误!所以递归必须要有结束条件. public class RecursionTest01{ //入口 public static void main(String[] args){ m1(); } public static void m1(){ m1(); //java.lang.StackOverflowError } } [例题1]:不使用递归,计算1-N的求和. p

递归调用实例分析2.在函数中间的递归与在函数尾部的递归

上一篇最后给出了用递归完成字符串逆置的代码,但是没有分析它的具体算法,今天做了如'abcde'字符串递归翻转的图跟大家分享(画的比较烂,具体思路还是有的,详情见附件) 这里的递归调用没有出现在函数末尾,二前面几个递归都出现在函数末尾,所以说递归可以分为在函数末尾的递归与在函数中的递归.其差别如下. 1.在函数尾部的递归,都可以用循环的方式做下去,这样的递归大多数情况只能造成代码的简洁,并不利于机器的运算. 2.在函数中间的递归,不一定能用循环的方式做下去,这样的递归有的可以转化成在函数末尾的递归

java 递归在实例中的几种用途(ps:准确获取树的子节点)

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

功能完善的Java连接池调用实例

/** * Title: ConnectPool.java * Description: 连接池管理器 * Copyright: Copyright © 2002/12/25 * Company: * Author : * Version 2.0 */ import java.io.*; import java.sql.*; import java.util.*; import java.util.Date; /** * 管理类DBConnectionManager支持对一个或多个由属性文件定义

Java中的递归调用

Java中不合理的使用递归调用,可能会导致栈内存溢出,这点是需要注意的. java将为每个线程维护一个栈,栈里将为每个方法保存一个栈帧,栈帧代表了一个方法的运行状态. 也就是我们常说的方法栈.最后一个为当前运行的栈帧. 那么每一次方法调用会为新调用方法的生成一个栈帧,保存当前方法的栈帧状态,栈帧上下文切换,切换到最新的方法栈帧. 在递归和循环之间选择时,应该优先选择的是循环而非递归,特别是要避免深度的递归. 关于递归还需要了解的是尾递归调用,尾递归调用是可以被进行优化的. 尾调用指的是一个方法或

java中获取所有文件--(递归调用)

import java.io.File;import java.io.*; //获取一个文件夹中的所有的文件.  /*    打印要求:      -- a.txt   -- IO.doc      -- ~$IO.doc   -- 代码   -- --.metadata   -- --Day18   --视频   -- --01 线程通信.wmv   -- --02 守护线程和join方法.wmv   -- --03 Filed的创建.wmv   -- --04 File的常用方法.wmv  

黑马程序员-java中方法的知识点和递归调用

------<a href="http://www.itheima.com" target="blank">Java培训.Android培训.iOS培训..Net培训</a>.期待与您交流! ------- 方法执行原理:(方法不调用不执行,调用才执行)  *   方法在调用的这时候,才会在内存中划分空间  *   方法在调用的时候,是在栈内存中分配的空间(jvm有一块内存是栈内存) * 函数/方法目的: 还是为了代码重用  * 相同的类型的