Java递归调用实例

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了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;

}


以上是关于Java递归调用实例的主要内容,如果未能解决你的问题,请参考以下文章

java中递归算法是啥怎么算的?

递归函数实例助理解

python 数据结构 理解迭代与递归 递归的实例 栈帧 函数调用

js实现递归算法

java之递归

深究递归和迭代的区别 联系 优缺点及实例对比