/**
*
*/
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>()));
}
}