博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
java递归
阅读量:5250 次
发布时间:2019-06-14

本文共 1347 字,大约阅读时间需要 4 分钟。

一  什么是递归?

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

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);        }    }

 

 

转载于:https://www.cnblogs.com/zzq123/p/10219067.html

你可能感兴趣的文章
多线程《三》进程与线程的区别
查看>>
linux sed命令
查看>>
LeetCode 160. Intersection of Two Linked Lists
查看>>
html标签的嵌套规则
查看>>
[Source] Machine Learning Gathering/Surveys
查看>>
HTML <select> 标签
查看>>
类加载机制
查看>>
tju 1782. The jackpot
查看>>
HTML5与CSS3基础(五)
查看>>
WinDbg调试C#技巧,解决CPU过高、死锁、内存爆满
查看>>
linux脚本中有source相关命令时的注意事项
查看>>
css样式表中的样式覆盖顺序
查看>>
湖南多校对抗赛(2015.03.28) H SG Value
查看>>
REST Web 服务(二)----JAX-RS 介绍
查看>>
hdu1255扫描线计算覆盖两次面积
查看>>
hdu1565 用搜索代替枚举找可能状态或者轮廓线解(较优),参考poj2411
查看>>
bzoj3224 splay板子
查看>>
程序存储问题
查看>>
Mac版OBS设置详解
查看>>
优雅地书写回调——Promise
查看>>