递归调用

    public static void main(String[] args) {
//        System.out.println(sum1(100));
//        System.out.println(sum2(100));
//        System.out.println(123456);
        printIntR1(123456);
        
    }
    static void printIntR(int x) {
        while (x > 0) {
            System.out.print(x % 10);
            x /= 10;
        
        }
    }
    static void printIntR1(int x) {
        if (x <= 0) {
            return;
        }
        System.out.println(x % 10);
        printIntR1(x / 10);
    }
    
    static void func1() {
        int a = 0;
        int b = 0;
        //递归调用  没有出口调用会导致stack overflow
        //错误的递归调用设计
        func1();
    }
    static void func2() {
        int x = 100;
        int y = 200;
    }
    static int sum1 (int x) {
        int s = 0;
        while (x > 0) {
            s += x--;
        }
        return s;
        
    }
    static int sum2(int x) {
        if (x <= 0) {
            //递归出口
            return 0;
        }
        int s = 0;
        s = x + sum2(x - 1);
        return s;
    }

posted @ 2019-02-20 20:49  zhencool  阅读(134)  评论(0)    收藏  举报