/**
*
*/
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递归算法提前返回值带出的更多相关文章

  1. 在Java 线程中返回值的用法

    http://icgemu.iteye.com/blog/467848 在Java 线程中返回值的用法 博客分类: Java Javathread  有时在执行线程中需要在线程中返回一个值:常规中我们 ...

  2. java 代码执行cmd 返回值异常 (关于JAVA Project.waitfor()返回值是1)

    关于JAVA Project.waitfor()返回值是1   0条评论 Project.waitfor()返回值是1,找了很久从网上没有发现关于1的说明. 这时对源代码调试了一下,发现Project ...

  3. 为什么Java不能以返回值区分重载方法?

    读者可能会想:"在区分重载方法的时候,为什么只能以类名和方法的形参列表作为标准呢?能否考虑用方法的返回值来区分呢?" 比如下面两个方法,虽然他们有相同的名字和形式参数,但却很容易区 ...

  4. JAVA是否允许返回值类型不同的重载overload或覆盖override

    在看<Thinking in java>的时候,看到子类的方法和父类的方法名字相同,但是返回值类型不同,然后就开始怀疑这属于覆盖吗,到网上找到了答案,分析见接下来的网址: http://g ...

  5. JAVA函数的返回值类型详解以及生成随机数的例题

    函数的四要素:函数名.输入.输出(返回).加工. 函数分为两种:一种是有返回值得函数,一种是没有返回值的函数. 1. 定义:没有返回值的函数:(当我不需要函数的计算结果再拿出来进行运算的时候,我就不需 ...

  6. 谁说java里面有返回值的方法必须要有返回值,不然会报错????

    慢慢的总是发现以前的学得时候有些老师讲的不对的地方! 所以还是尽量别把一些东西说的那么绝对,不然总是很容易误导别人,特别是一些你自己根本就没有试过的东西,然后又斩钉截铁的告诉别人,这样不行,肯定不行什 ...

  7. 10-02 Java 形式参数和返回值的问题深入研究,链式编程

    形式参数和返回值的问题: 1:形式参数和返回值的问题(理解) (1)形式参数: 类名:需要该类的对象 抽象类名:需要该类的子类对象 接口名:需要该接口的实现类对象 (2)返回值类型: 类名:返回的是该 ...

  8. Java 中无返回值的方法在使用时应该注意的问题

    Java 中的方法是形态多样的.无返回值的方法在使用时应该规避哪些问题呢? 一.不可以打印调用或是赋值调用,只能是单独调用(非常重要): 二.返回值没有,不代表参数就没有: 三.不能return一个具 ...

  9. Java连载27-有返回值的方法注意点

    一.方法注意点 (1)方法的调用不一定再main方法中,可以在其他方法中进行调用,只要是程序执行到的位置,都可以去调用其他方法. (2)方法调用的时候,实参和形参要求个数对应相同,数据类型对应相同,方 ...

随机推荐

  1. sench touch 页面跳转

    下面是我做的一个简单的登录页面登录成功后跳转页面 首页要在app.js 里面添加 1.视图层   登录页面 Ext.define('MyApp.view.Login', { extend: 'Ext. ...

  2. 移动端适配问题px->rem方法

    移动端web页面适配问题 1.引入插件 github地址:https://github.com/re54k/mobileweb-utilities/blob/master/util/mobile-ut ...

  3. 【贪心】LIS @The 15th Zhejiang Provincial Collegiate Programming Contest E

    传送门 题意要你构造一个序列,使得该序列的每个位置上的最长上升子序列的长度能构成给定的序列. 构造序列的元素要求还要求满足给定的上下界 solution 我们可以把给出的最长上升子序列的长度按升序排列 ...

  4. JAVA自学笔记17

    JAVA自学笔记17 1.Map接口 1)概述 将键映射到值的对象,一个映射不能包含重复的键,每个键最多只能映射到一个值.可以存储键值对的元素 2)与Collection接口的不同: ①Map是双列的 ...

  5. poj3268 Silver Cow Party(两次dijkstra)

    https://vjudge.net/problem/POJ-3268 一开始floyd超时了.. 对正图定点求最短,对逆图定点求最短,得到任意点到定点的往返最短路. #include<iost ...

  6. JSOUP 乱码处理

    JSOUP  支持在请求的时候,传入URL 对象,然后设置编码.如下方式才是正解,设置编码为GBK . doc = Jsoup.parse(new URL(url).openStream(), &qu ...

  7. .net core安装及初体验

    .net core安装及初体验 .net core 作为微软的新一代技术,在开发跨平台.微服务等方面有很大的优势,也更贴近现代的编码习惯.在2.0版发布很久以后,近期终于决定进行学习和体验. 安装 作 ...

  8. 【性能提升神器】Covering Indexes

    可能有小伙伴会问,Covering Indexes到底是什么神器呢?它又是如何来提升性能的呢?接下来我会用最通俗易懂的语言来进行介绍,毕竟不是每个程序猿都要像DBA那样深刻理解数据库,知道如何用以及如 ...

  9. Go 语言极速入门

    本系列文章主要是记录<Go 语言实战>和<Google 资深工程师深度讲解 Go 语言>的学习笔记. Go 语言极速入门1 - 环境搭建与最简姿势Go 语言极速入门2 - 基础 ...

  10. C# ReaderWriterLockSlim 实现

    其实ReaderWriterLockSlim的实现前段时间看了,当时不打算记录下来的,因为它的实现实在System.Core项目里面,而不是mscorlib项目.按照惯例我们还是先看看网上的一些说法吧 ...