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)方法调用的时候,实参和形参要求个数对应相同,数据类型对应相同,方 ...
随机推荐
- BZOJ4432 : [Cerc2015]Greenhouse Growth
对于高度相同的一段可以合并,用链表从左往右维护这些连续段,每段维护以下信息: $l,r$:表示区间的左右端点. $t,a$:表示在第$t$天结束时它的高度是$a$. $b$:当阳光在左边时它是否会长高 ...
- BZOJ3070 : [Pa2011]Prime prime power 质数的质数次方
对于$a^b$,如果$b=2$,那么在$[\sqrt{n},\sqrt{n}+k\log k]$内必定能找到$k$个质数作为$a$. 筛出$n^{\frac{1}{4}}$内的所有质数,暴力枚举所有落 ...
- egret键盘事件监听
document.addEventListener("keydown", function (event: any) { //alert(event.key); //console ...
- eclipse 安装合适的pydev插件
http://www.cnblogs.com/yanduanduan/p/7261500.html
- arcgis 获得工具箱工具的个数
import arcgisscripting import string; gp = arcgisscripting.create(9.3); ##多少个工具箱 toolboxes = gp.list ...
- Springboot中Aspect实现切面(以记录日志为例)
前言今天我们来说说spring中的切面Aspect,这是Spring的一大优势.面向切面编程往往让我们的开发更加低耦合,也大大减少了代码量,同时呢让我们更专注于业务模块的开发,把那些与业务无关的东西提 ...
- C#保存文件为无BOM的utf8格式
如图所示,发现用C#的 File.WriteAllLines 方法,无论怎么设置,最终生成的文件都是 PC utf8,也就是CRLF,用SVN进行提交的时候,显示左侧为utf8,右侧为utf8 BOM ...
- [Web 前端] 我不再使用React.setState的3个原因
copy from : https://blog.csdn.net/smk108/article/details/85237838 从几个月前开始,我在新开发的React组件中不再使用setState ...
- iOS 获取IP
#import <ifaddrs.h> //获取IP #import <arpa/inet.h> //只能获取WIFI下的IP地址 + (NSString *)getIPAdd ...
- 类中添加log4j日志
在编写代码的时候需要随时查看工作日志,查看工作日志的好处就是随时能检查出错误.所以我一般就需要在编写代码的前期添加工作日志,以便更好的查看相关错误输出. 以一个springmvc小demo为例子 主 ...