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递归调用实例的主要内容,如果未能解决你的问题,请参考以下文章