/**
*
*/
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. [P1516]青蛙的约会 (扩展欧几里得/中国剩余定理?)

    每日做智推~ 一看就是一道数学题. 再看是一道公约数的题目. 标签是中国孙子定理. 题解是扩展欧几里得 (笑) 一开始没看数据范围 只有50分 开一个longlong就可以了 #include< ...

  2. Java WebSocket HttpSession与WebSocket Session的关联

    当HttpSession中止(通过显示地失效或超时)时,Web容器会把HttpSession属性从HttpSession中清除. javax.servlet.http.HttpSessionBindi ...

  3. 3ds max学习笔记(十)-- 实例操作(镜像和对齐)

    1,镜像 选择物体对象然后点击: 偏移:新对象距离轴心所在的直线的距离: 2.对齐 栗子: 选择小球,点击[对齐];鼠标放置在图种位置,点击鼠标左键 出现弹框 调整位置: 先选择对齐位置-->当 ...

  4. 如何实现织梦dedecms表单提交时发送邮箱功能【已解决】

    我们通过织梦系统制作网站时,很多客户需要有在线留言功能,这时就会用到自定义表单.但是很多用户觉得经常登陆后台查看留言信息太麻烦了,于是想能否在提交留言是直接把内容发送到指定邮箱.网站经过测试终于实现了 ...

  5. jquery 上下滚动显示隐藏

      function scroll(fn) { var beforeScrollTop = document.body.scrollTop, fn = fn || function() {}; win ...

  6. 增加tomcat的运行速度

    1.增加tomcat的运行速度

  7. 问题7:JavaScript 常用正则示例

    1. trim功能(清除字符串两端空格) String.prototype.trim = function() { return this.replace(/(^\s+)|(\s+$)/g, ''); ...

  8. delphi button 实现下拉列表

    unit Unit1; interface uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms ...

  9. drawRect中抗锯齿

    在开始之前,我们需要创建一个DrawRectView 其初始代码为 // // DrawRectView.h // CGContextSetShouldAntialias // // Created ...

  10. Java程序猿怎样高速理解Kubernetes

    版权声明:本文为博主原创文章,未经博主同意不得转载. https://blog.csdn.net/M2l0ZgSsVc7r69eFdTj/article/details/82892167 https: ...