java递归应用
/**
* 分配人员数据
* @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递归应用的更多相关文章
- Java递归列出目录下全部文件
Java递归列出目录下全部文件 /** * 列出指定目录的全部内容 * */ import java.io.*; class hello{ public static void main(String ...
- Java 递归调用 recursive 给一个参数 返回一大堆
需求: 需要组装成对象多层嵌套式的 json字符串; 想到使用 递归来完成这个多层嵌套: 憋了四个小时,终于写出来了; 先看效果: 数据库中的数据: 拼装后的效果: [ EmpVO{ ename='孙 ...
- JAVA 递归实现从n个数中选取m个数的所有组合
这周Java课程有个小作业:Java递归实现从n个数中选取m个数的所有组合 代码如下: //其中 n 取 1,2,3,4,5 五个数, m 取 3 package javaText; public c ...
- JAVA递归、非递归遍历二叉树(转)
原文链接: JAVA递归.非递归遍历二叉树 import java.util.Stack; import java.util.HashMap; public class BinTree { priva ...
- 慎用Java递归调用
总结:慎用Java递归调用,测试时可以尝试该方法,否则尽量不要使用递归!递归过多调用时,最好改为for或者whlie来代替. 在java语言中,使用递归调用时,如果过多的调用容易造成java.lang ...
- Java递归实现阶乘
import java.util.Scanner; public class Factorial { public static void main(String[] args) { Scanner ...
- java递归删除目录下所有内容
java递归删除目录下所有内容 private static boolean deleteDir(File dir) {if (dir.isDirectory()) { String[] ...
- JAVA递归实现线索化二叉树
JAVA递归实现线索化二叉树 基础理论 首先,二叉树递归遍历分为先序遍历.中序遍历和后序遍历. 先序遍历为:根节点+左子树+右子树 中序遍历为:左子树+根节点+右子树 后序遍历为:左子树+右子树+根节 ...
- 算法笔记_013:汉诺塔问题(Java递归法和非递归法)
目录 1 问题描述 2 解决方案 2.1 递归法 2.2 非递归法 1 问题描述 Simulate the movement of the Towers of Hanoi Puzzle; Bonus ...
- Java递归输出指定路径下所有文件及文件夹
package a.ab; import java.io.File; import java.io.IOException; public class AE { public static void ...
随机推荐
- NSMutableRLEArray objectAtIndex:effectiveRange:: Out of bounds
Bugly: Trapped uncaught exception 'NSRangeException', reason: 'NSMutableRLEArray objectAtIndex:eff ...
- 在shell下,用命令将U盘挂载到ubuntu上,并将文件copy到U盘里面
首先将鼠标定位到ubuntu上,然后插上U盘,这时候先用指令: fidsk -l 查看一下U盘,(这是应该有一个盘符了) 如果没有的话,就尽享下面的步骤: 首先使用命令查看是那个分区,在U盘插入前后, ...
- vim - mark
Using markshttp://vim.wikia.com/wiki/Using_marks1. There is no visible indication of where marks are ...
- SpringMVC常用配置-配置DispatcherServlet映射请求路径的方式
- LoadRunner访问Mysql数据库
这是很久以前编写的一个测试案例,那时是为了检查大量往Mysql数据库里插入数据,看一下数据库的性能如何?服务器是否会很快就被写满了. 前期的准备工作:Mysql 数据库搭建,LoadRunner,li ...
- java环境变量的设置
java安装好后需要配置一下环境变量,配置方法如下: 1.在系统变量里添加两条记录: 1)变量名:JAVA_HOME,变量值为java安装路径,如:C:\Program Files\Java\jdk1 ...
- form表单编码方式设置为multipart/form-data,后台参数出现乱码情况
一般在上传图片过程中,form中的编码方式一般采用multipart/form-data方式编码,但是后台这取参数时,可能会出现乱码情况:这里后台要采用转换编码方式: 页面: 后台:获取表单元素时,
- Android -- 常见控件的小效果
1,EditText控件 ① 修改光标颜色 自定义drawable 创建cursor.xml文件 <?xml version="1.0" encoding="utf ...
- ffmpeg将图片合成视频
本来想做个android录制屏幕的功能,但是目前只能是截图 然后把图片合成视频,这里就需要用到 ffmpeg 在做之前也是参考了其它一些比较不错的文章 比如:http://www.open-open. ...
- Python练习,网络小爬虫(初级)
最近还在看Python版的rcnn代码,附带练习Python编程写一个小的网络爬虫程序. 抓取网页的过程其实和读者平时使用IE浏览器浏览网页的道理是一样的.比如说你在浏览器的地址栏中输入 www ...