/****/
packagetestJava.java.foreach;importjava.util.ArrayList;importjava.util.LinkedList;importjava.util.List;importjava.util.Map;importjava.util.Queue;importjava.util.Stack;/***@authorjhuang.sjtu
* @function 测试循环嵌套函数返回值 递归算法
* @date 2017年4月12日
*@version
*/
public classTestForeach {public int starta(int j,Mapre){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");returnk;
}public int startb(int j,ArrayListre){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); //最后一个
returnk;
}public int startc(int j,Queuere){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(); //返回第一个元素
returnk;
}public int startd(int j,Stackre){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();returnk;
}private int dothing(int i, intj) {//if(i== -1){//return 0;//}else{
System.out.println("j="+j);returnj;//}
}private int get(intj) {if(j<=2){return 0;
}else{return -1;
}
}/***@paramargs*/
public static voidmain(String[] args) {
TestForeach t= newTestForeach();//Map测试//System.out.println("last="+t.starta(1,new HashMap()));//List测试//System.out.println("last="+t.startb(1,new ArrayList()));//按次序的
/*List ls = new ArrayList();
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()));//堆栈//System.out.println("last="+t.startd(1,new Stack()));
}
}