java递归函数返回值_java递归算法提前返回值带出

/****/

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()));

}

}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值