递归

递归这个东西绕了我好几次,真的是无语了,本来就是个小东西,但是容易忘记,索性记下来:

/**
     * 递归:当前方法 内调用自己的现象
     */
    /*
     * @Test public void digui() { System.out.println("递归演示"); digui(); }
     */
    public static void main(String[] args) {
        // 计算1~num的和,使用递归完成
        int n = 5;
        int sum = getSum(n);
        System.out.println(sum);
        File dir0 = new File("g://files");
        getAllFiles(dir0);

    }

    // 示例1:输入一个数,求1-改数的所以整数的和
    public static int getSum(int n) {
        if (n == 1) {
            return 1;
        }
        return n + getSum(n - 1);
    }

    // 示例2:找出某个文件夹下面所有的文件并打印出其路径名称
    public static void getAllFiles(File file) {
        File f[] = file.listFiles();
        for (File fn : f) {
            if (fn.isDirectory()) {
                getAllFiles(fn);
            } else {

                System.out.println(fn);
            }
        }
    }
    /**
     * 总结:注意:递归一定要有条件限定,保证递归能够停止下来,否则会发生栈内存溢出。 在递归中虽然有限定条件,但是递归次数不能太多。否则也会发生栈内存溢出。
     * 构造方法禁止递归
     */
原文地址:https://www.cnblogs.com/luzhanshi/p/10733768.html