java递归算法提前返回值带出
/**
*
*/
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递归算法提前返回值带出的更多相关文章
- 在Java 线程中返回值的用法
http://icgemu.iteye.com/blog/467848 在Java 线程中返回值的用法 博客分类: Java Javathread 有时在执行线程中需要在线程中返回一个值:常规中我们 ...
- java 代码执行cmd 返回值异常 (关于JAVA Project.waitfor()返回值是1)
关于JAVA Project.waitfor()返回值是1 0条评论 Project.waitfor()返回值是1,找了很久从网上没有发现关于1的说明. 这时对源代码调试了一下,发现Project ...
- 为什么Java不能以返回值区分重载方法?
读者可能会想:"在区分重载方法的时候,为什么只能以类名和方法的形参列表作为标准呢?能否考虑用方法的返回值来区分呢?" 比如下面两个方法,虽然他们有相同的名字和形式参数,但却很容易区 ...
- JAVA是否允许返回值类型不同的重载overload或覆盖override
在看<Thinking in java>的时候,看到子类的方法和父类的方法名字相同,但是返回值类型不同,然后就开始怀疑这属于覆盖吗,到网上找到了答案,分析见接下来的网址: http://g ...
- JAVA函数的返回值类型详解以及生成随机数的例题
函数的四要素:函数名.输入.输出(返回).加工. 函数分为两种:一种是有返回值得函数,一种是没有返回值的函数. 1. 定义:没有返回值的函数:(当我不需要函数的计算结果再拿出来进行运算的时候,我就不需 ...
- 谁说java里面有返回值的方法必须要有返回值,不然会报错????
慢慢的总是发现以前的学得时候有些老师讲的不对的地方! 所以还是尽量别把一些东西说的那么绝对,不然总是很容易误导别人,特别是一些你自己根本就没有试过的东西,然后又斩钉截铁的告诉别人,这样不行,肯定不行什 ...
- 10-02 Java 形式参数和返回值的问题深入研究,链式编程
形式参数和返回值的问题: 1:形式参数和返回值的问题(理解) (1)形式参数: 类名:需要该类的对象 抽象类名:需要该类的子类对象 接口名:需要该接口的实现类对象 (2)返回值类型: 类名:返回的是该 ...
- Java 中无返回值的方法在使用时应该注意的问题
Java 中的方法是形态多样的.无返回值的方法在使用时应该规避哪些问题呢? 一.不可以打印调用或是赋值调用,只能是单独调用(非常重要): 二.返回值没有,不代表参数就没有: 三.不能return一个具 ...
- Java连载27-有返回值的方法注意点
一.方法注意点 (1)方法的调用不一定再main方法中,可以在其他方法中进行调用,只要是程序执行到的位置,都可以去调用其他方法. (2)方法调用的时候,实参和形参要求个数对应相同,数据类型对应相同,方 ...
随机推荐
- C# Json序列化去掉k__BackingField问题的解决方案
方案一: 如果是WebAPI,可以加入全局设置: GlobalConfiguration.Configuration.Formatters.JsonFormatter.SerializerSettin ...
- TFS Release 步骤调用命令行返回失败信息的处理方法
TFS Release中自定义步骤时,可以选择“命令行”,官方的文档中,并没有描述调用相关的程序后,如何返回失败信息.通过下面步骤,可以实现本标题描述的功能. 步骤一:编写Console Applic ...
- yii2 数据提供者 dataProvider
数据提供者 dataProvider $dataProvider = new ActiveDataProvider([ 'query' => $query, // 如何来取得数据 'pagina ...
- EasyAR 开发实例---AR礼物(简单demo)
一个节日礼物效果 --显示模型 在本次的案例中,我使用的是unity5.6.3版本,EasyAR 为2.0.(用1.0的版本,在渲染那块有问题) [导入SDK]到EasyAR官网(http://www ...
- redis:aof恢复与rdb服务器间迁移
1. aof恢复与rdb服务器间迁移: 1.1. Aof恢复: 如果不小心执行了flushdb或flushall了怎么办? (1)立马执行命令:shutdown nosave 关闭服务器,为了防止其他 ...
- margin塌陷
我工作基本上就是写业务逻辑,不怎么写页面就一直觉得页面布局特高深.有天我同事问我,知道margin塌陷是什么东西不,我说我不知道(反正我也不用,管他呢),他说面试的时候问的(...那这必须得去看啊). ...
- Vue(十五)组件
一. 组件component 1. 什么是组件? 组件(Component)是 Vue.js 最强大的功能之一.组件可以扩展 HTML 元素,封装可重用的代码 组件是自定义元素(对象) 2. 定义组件 ...
- [原创]Burp Suite web应用程序渗透测试神器
[原创]Burp Suite web应用程序渗透测试神器 一 Burp Suite介绍 Burp Suite是Web应用程序测试的最佳工具之一,其多种功能可以帮我们执行各种任务.请求的拦截和修改,扫描 ...
- Unity项目中文字的统一管理
一款游戏在研发初期就需要考虑多语言的问题,否则后期在进行多国语言版本时就面临着巨大的成本.鉴于之前页游的经验,其它同事设计出读取Excel的方式来管理所有的文字.但是我在使用中发现很致使的一个问题,当 ...
- SSE图像算法优化系列十四:局部均方差及局部平方差算法的优化。
关于局部均方差有着较为广泛的应用,在我博客的基于局部均方差相关信息的图像去噪及其在实时磨皮美容算法中的应用及使用局部标准差实现图像的局部对比度增强算法中都有谈及,即可以用于去噪也可以用来增强图像,但是 ...