zoukankan      html  css  js  c++  java
  • java递归

    一  什么是递归?

    递归,就是自己调用自己,但是需要给一个出口,不能无限死循环

    public void method(){
        System.out.println(“递归的演示”);
        //在当前方法内调用自己
        method();
    }

    递归又分直接递归和间接递归

    直接递归就是在本方法中调用自己

    间接递归就是A方法调用B方法,B方法调用C方法,然后C再调用A,这就是间接递归

    举个例子:计算1-100之间的和

    public class DiGuiDemo {
        public static void main(String[] args) {
            //计算1~num的和,使用递归完成
            int n = 5;
            int sum = getSum(n);
            System.out.println(sum);
            
        }
        public static int getSum(int n) {
            if(n == 1){
                return 1;
            }
            return n + getSum(n-1);
        }
    }

    举一反三:求1-100的阶乘

    public static BigDecimal getSum(int n){
            BigDecimal m=new BigDecimal(n);
            if(n==1){
                return new BigDecimal(1);
            }
            BigDecimal bigMul = m.multiply(getSum(n-1));
            return bigMul;
        }

    因为数据太大,对于大数据的处理,只能用BigDecimal

    需要注意的是:

    递归一定要有条件限定,保证递归能够停止下来,否则会发生栈内存溢出。

    在递归中虽然有限定条件,但是递归次数不能太多。否则也会发生栈内存溢出。

    二  用 递归打印所有子目录中的文件路径

    public static void main(String[] args) {
            File file=new File("E:\java");
            getFile(file);
        }
        public static void getFile(File dir){
            File[] files=dir.listFiles(new MyFileter());
            System.out.println(dir+"文件夹");
            for(File f:files){
                //如果该文件对象是文件夹则调用自己
                if(f.isDirectory()){
                    getFile(f);
                }
                System.out.println(f);
            }
        }

     

  • 相关阅读:
    正则表达式
    JS逻辑算法
    js函数
    JS运算符的应用
    JS课堂笔记
    json模块学习
    什么是面向对象,以及如何定义对象,实例化对象
    什么是面向过程,以及代码展示
    什么是元类,以及用type类来产生类.
    python下载安装
  • 原文地址:https://www.cnblogs.com/zzq123/p/10219067.html
Copyright © 2011-2022 走看看