第七节(简单算法)

/*
    关于方法的递归调用
        
        方法调用其实是 “压栈”
        方法结束其就是 “弹栈”                        
        1. 方法的递归调用就是方法自身调用自身
        2. 以下程序因为递归没有结束条件,所以一直在压栈,没有弹栈,导致 栈内存溢出报错 !
        
        所以 递归必须要有结束条件;
*/

public class RecursionTest01{


    // 入口
    public static void main(String[] args){
        arry();
        
    }
        public static void arry(){
        arry();    
    }

}
/*
    计算 1-N的求和
    
    不使用 递归 怎么做?

*/

public class RecursionTest02{

    public static void main(String[] args){
        
        int value = sum1(6);
        
        System.out.println("value = " + value);
        
    }

    // 该方法 需要完成1-N的求和
    public static int sum1(int n){
        
        int sum = 0;
        for(int i = 0; i <= n; i++){
            //sum = sum + i;
            sum += i;
        }
        return sum;
    }


}

/*
    计算 1-N的求和
    
    使用 递归 怎么做?

*/

public class RecursionTest03{

    public static void main(String[] args){
        
        int n = 6;
        
        // 调用该方法
        int value = sum1(n);
        
        System.out.println("value = " + value);
        
    }

    // 该方法 需要完成1-N的求和
    // 1+2+3+4+5+6+ ..... +N
    public static int sum1(int n){
        
        System.out.println("我们在外边试试  ------------------------");
        
        if(n == 1){
            System.out.println("ming到底帅不帅 ! 我是NO1");
            return 1;    
        } else {
            System.out.println("ming到底帅不帅 !");
            return n + sum1(n-1);
        }

        /*
            当 n = 6; n+(n-1) 6+5;
        
        */
        
    }
}
/*
    
    使用图形,画出一个程序的执行流程
    
    后进先出
    
    方法的执行原理:
    
        方法在调用的时候,才会给该方法在内存中分配空间
        如果这个方法只是定义没有调用,则不会在内存中分配空间
        
        方法在调用的时候在 “栈” 中分配空间,(JVM内存中有一块内存是 栈内存)
        方法调用其实是 “压栈”
        方法结束其就是 “弹栈”
        
        只有方法结束才能弹栈

*/

public class MethodTest08{

    // 入口
    public static void main(String[] args){
        int i = 100;
        m1(i);
        
    }
    
    public static void m1(int i){
        m2(i);
    }
    
    public static void m2(int i){
        m3(i);
    }
    
    public static void m3(int i){
        System.out.println("m3的方法中的i = " + i);    
    }
    
    public static void m4(){
        
    }
    

}

 

posted @ 2015-01-15 16:55  哥的笑百度不到  阅读(124)  评论(0编辑  收藏  举报