java递归算法提前返回值带出
2017-04-12 23:49
246 查看
/** * */ package testJava.java.foreach; import java.util.ArrayList; import java.util.LinkedList; import java.util.List; import java.util.Map; import java.util.Queue; import java.util.Stack; /** * @author jhuang.sjtu * @function 测试循环嵌套函数返回值 递归算法 * @date 2017年4月12日 * @version */ public class TestForeach { public int starta(int j,Map<String,Integer> re){ int k = -2; for (; j < 11; ) { int i = get(j); if(i == -1){ break; //跳出 } k = dothing(i,j); System.out.println(j+" re="+re.get("k")); re.put("k", k); if(k != 0){ // return starta(++j,re); starta(++j,re); //是否带return都一样~ } break; } k=re.get("k"); return k; } public int startb(int j,ArrayList<Integer> re){ int k = -2; for (; j < 11; ) { int i = get(j); if(i == -1){ break; //跳出 } k = dothing(i,j); re.add(k); // if(re.size()!=0) System.out.println(j+" k~"+k); for (Integer integer : re) { System.out.println("rrr="+integer); } if(k != 0){ // return starta(++j,re); startb(++j,re); //是否带return都一样~ } break; } System.out.println("@j="+j); k=re.get(re.size()-1); //最后一个 return k; } public int startc(int j,Queue<Integer> re){ int k = -2; for (; j < 11; ) { int i = get(j); if(i == -1){ break; //跳出 } k = dothing(i,j); re.add(k); // if(re.size()!=0) System.out.println(j+" k~"+k); for (Integer integer : re) { System.out.println("rrr="+integer); } if(k != 0){ // return starta(++j,re); startc(++j,re); //是否带return都一样~ } break; } System.out.println("@j="+j); // k=re.get(re.size()-1); //最后一个 k=re.peek(); //返回第一个元素 return k; } public int startd(int j,Stack<Integer> re){ int k = -2; for (; j < 11; ) { int i = get(j); if(i == -1){ break; //跳出 } k = dothing(i,j); // re.add(k); re.push(k); // if(re.size()!=0) System.out.println(j+" k~"+k+",re="+re); for (Integer integer : re) { System.out.println("rrr="+integer); } if(k != 0){ // return starta(++j,re); startd(++j,re); //是否带return都一样~ } break; } System.out.println("@j="+j); // k=re.get(re.size()-1); //最后一个 k=re.lastElement(); return k; } private int dothing(int i, int j) { // if(i== -1){ // return 0; // }else{ System.out.println("j="+j); return j; // } } private int get(int j) { if(j<=2){ return 0; }else{ return -1; } } /** * @param args */ public static void main(String[] args) { TestForeach t = new TestForeach(); //Map测试 // System.out.println("last="+t.starta(1,new HashMap<String, Integer>())); //List测试 // System.out.println("last="+t.startb(1,new ArrayList<Integer>())); //按次序的 /*List<Integer> ls = new ArrayList<Integer>(); ls.add(1); ls.add(2); ls.add(3); ls.add(4); ls.add(5); for (Integer integer : ls) { System.out.println(integer); }*/ //队列 System.out.println("last="+t.startc(1,new LinkedList<Integer>())); //堆栈 // System.out.println("last="+t.startd(1,new Stack<Integer>())); } }
相关文章推荐
- java调用ORACLE 存储过程返回值33
- java程序的递归算法,列出某个目录下的所有子目录和文件
- JAVA 应用简单破解---类库提前加载
- 递归算法 阶乘 JAVA描述
- 实例源码1:利用Java调用可执行命令并取得其返回值
- 递归算法 列出给定目录下的文件/java描述
- JAVA 应用简单破解---类库提前加载
- java程序的递归算法,列出某个目录下的所有子目录和文件
- java调用其它程序之返回值
- java程序的递归算法,列出某个目录下的所有子目录和文件
- java程序的递归算法,列出某个目录下的所有子目录和文件
- java程序的递归算法,列出某个目录下的所有子目录和文件
- 递归算法 阶乘 JAVA描述
- JAVA斐波那契递归算法
- 在DWR中实现直接获取一个JAVA类的返回值
- java调用ORACLE 存储过程返回值
- java参数值和返回值是值还是引用
- 用java实现的经典递归算法
- 传参数无返回值的 java 调oracle的存储过程.(向数据库表中插入数据)
- 实例源码2:利用Java调用可执行命令并取得其返回值