您的位置:首页 > 编程语言 > Java开发

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

}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: