/**
* 分配人员数据
* @param num 数据条数
* @param taskUs 人员数据
* @param isend 标记第一次循环
*/
private void distTaskNum(int num,List<TaskUserInfo> taskUs,boolean isend){
//是否被分配判断
int bakNum = num;
//循环次数
int forTnt =0;
if(Common.isListEmpty(taskUs)){
int numcurdis=0;
for(TaskUserInfo info : taskUs)
{
//分配条数为0标记并退出
if(num==0){
info.setEndPosition(Boolean.TRUE);
break;
}
forTnt=forTnt+1;
//寻找上一次结束位置
if(isend){
//结束位置判断 || 已被分配继续分配
if(info.isEndPosition() || bakNum != num){
num = num -1;
int numcur = info.getNumberCurrent()!=null?info.getNumberCurrent():0;
int numdis = info.getNumberDistribution()!=null?info.getNumberDistribution():0;
info.setEndPosition(Boolean.FALSE);
if(numcur<=numdis)
{
if(numcur==numdis){ //标记当前分配条数是否与分配条数相等
numcurdis=numcurdis+1;
continue;
}else{
info.setNumberCurrent(numcur+1);
}
//添加完递减
num = num -1;
}
}
}else{
int numcur =info.getNumberCurrent()!=null ? info.getNumberCurrent():0;
int numdis = info.getNumberDistribution()!=null ? info.getNumberDistribution():0;
if(numcur<=numdis)
{
if(numcur==numdis){//标记当前分配条数是否与分配条数相等
numcurdis=numcurdis+1;
continue;
}else{
info.setNumberCurrent(numcur+1);
}
//添加完递减
num = num -1;
}
}
//标记循环结束和分配条数为0 结束位置
if(num==0&&taskUs.size()==forTnt){
taskUs.get(0).setEndPosition(Boolean.TRUE);
}
}
//新增条数分配次数
if(taskUs.size()==numcurdis)
{
for(TaskUserInfo info : taskUs)
{
int numfre = info.getNumberFrequency()!=null?info.getNumberFrequency():0;
info.setNumberFrequency(numfre+1);
info.setNumberCurrent(0);
}
}
//根据条件递归方法
if(num>0){
distTaskNum(num,taskUs,false);
} }
}

java递归应用的更多相关文章

  1. Java递归列出目录下全部文件

    Java递归列出目录下全部文件 /** * 列出指定目录的全部内容 * */ import java.io.*; class hello{ public static void main(String ...

  2. Java 递归调用 recursive 给一个参数 返回一大堆

    需求: 需要组装成对象多层嵌套式的 json字符串; 想到使用 递归来完成这个多层嵌套: 憋了四个小时,终于写出来了; 先看效果: 数据库中的数据: 拼装后的效果: [ EmpVO{ ename='孙 ...

  3. JAVA 递归实现从n个数中选取m个数的所有组合

    这周Java课程有个小作业:Java递归实现从n个数中选取m个数的所有组合 代码如下: //其中 n 取 1,2,3,4,5 五个数, m 取 3 package javaText; public c ...

  4. JAVA递归、非递归遍历二叉树(转)

    原文链接: JAVA递归.非递归遍历二叉树 import java.util.Stack; import java.util.HashMap; public class BinTree { priva ...

  5. 慎用Java递归调用

    总结:慎用Java递归调用,测试时可以尝试该方法,否则尽量不要使用递归!递归过多调用时,最好改为for或者whlie来代替. 在java语言中,使用递归调用时,如果过多的调用容易造成java.lang ...

  6. Java递归实现阶乘

    import java.util.Scanner; public class Factorial { public static void main(String[] args) { Scanner ...

  7. java递归删除目录下所有内容

    java递归删除目录下所有内容 private static boolean deleteDir(File dir) {if (dir.isDirectory()) {        String[] ...

  8. JAVA递归实现线索化二叉树

    JAVA递归实现线索化二叉树 基础理论 首先,二叉树递归遍历分为先序遍历.中序遍历和后序遍历. 先序遍历为:根节点+左子树+右子树 中序遍历为:左子树+根节点+右子树 后序遍历为:左子树+右子树+根节 ...

  9. 算法笔记_013:汉诺塔问题(Java递归法和非递归法)

    目录 1 问题描述 2 解决方案  2.1 递归法 2.2 非递归法 1 问题描述 Simulate the movement of the Towers of Hanoi Puzzle; Bonus ...

  10. Java递归输出指定路径下所有文件及文件夹

    package a.ab; import java.io.File; import java.io.IOException; public class AE { public static void ...

随机推荐

  1. ssh 配合 tar 实现远程推送

    tar命令和ssh配合使用 如何在空间不是很富裕的情况,把文件从一个分区tar到另外一个分区,其实还有很多办法的,使用管道命令就可以实现 如: #tar -cvf home |(cd /datavg3 ...

  2. win10没有新建文件夹

    win10没有新建文件夹 win10系统,电脑点击右键没有新建文件夹选项. 工具/原料   win10 系统台式机 方法/步骤     电脑左下角搜素出输入:cmd   出现以下画面   在命令指示符 ...

  3. cursor or set-based

    标题可能和正文不太相符.我主要是记录工作中遇到使用游标的语句改成普通set-based operation,执行时间快了很多. 1.游标语句 declare @startDate dateTime d ...

  4. java.util.ConcurrentModificationException --map

    key:3-key key:/v1.02-key Exception in thread "main" java.util.ConcurrentModificationExcept ...

  5. 3.Java Script 类型

     true: null==undefinedfalse: null===undefined   

  6. Android使用ndk-stack获取so奔溃堆栈

    利用NDK做开发,因为各种原因的不小心,导致了闪退问题,没有stack的话,很难查到问题的所在.这时候ndk-stack出场了. 先看看如下DUMP信息: ********** Crash dump: ...

  7. 几个js函数

    <!DOCTYPE html> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <m ...

  8. 删除txt文件每行第一(n)个空格前内容的方法

    1. 把要处理的文本保存在a.txt文件中 2. 在相同文件夹中新建一个xx.txt文件,输入下面代码,再把文件名改为xx.bat. @echo offset fn=a.txt(for /f &quo ...

  9. C语言回顾-指针

    1.指针:地址 指针变量:存放指针的变量 指针变量的定义:数据类型 *指针变量名 或者 数据类型* 指针变量名 指针变量的初始化:int *p=&a;int *p=NULL;(不能先定义后初始 ...

  10. Java import以及Java类的搜索路径

    如果你希望使用Java包中的类,就必须先使用import语句导入.import语句与C语言中的 #include 有些类似,语法为:    import package1[.package2-].cl ...