• 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>()));
        }
    
    }
  • 相关阅读:
    Bean管理学习笔记
    Spring核心概念学习笔记
    Spring主要用到两种设计模式
    C# 值类型和引用类型等值判断
    嵌入式Linux之gdb配置和使用
    嵌入式Linux之telnet
    构建嵌入式Linux交叉编译工具链
    Linux动态库和静态库
    VxWorks BSP开发入门
    buildroot
  • 原文地址:https://www.cnblogs.com/simpledev/p/6702013.html
Copyright © 2020-2023  润新知