三种经典递归

1.阶乘

嗯,这个就是 高中还是初中学的,比如4的阶乘 4!=1x2x3x4 ,那么也就是说自己调用自己的方法,一直乘n-1一直到n=2为止。

 
//1.阶层
public class factorial{
 
    public static int def(int n){
        if(n>0){
            if(n==1){
                return n;
            }else{
                return def(n-1)*n;
            }
        }
    }
 
    public static void main (String [] args){
        def(10)
    }
 
}

2.fibonacii

a1=1,a2=1,a3=2,a4=3...也就是说an = a(n-1) +a(n-2),  输入n(数字的位置),要知道这个数字是多少,同理。用方法,只有第一位和第二位返回1其余都返回f(n-1)+f(n-2)即可。

然后f(n-1)再调用递归方法成为f(n-2)+f(n-3),直到f里的参数为1或者2停止,全部展开之后就成为多个f(1)和f(2)的和。

public class fibonacii{
    public static void main(String []args){
        fib(20)
    }
    public static int fib(int n){
        if(n==1 || n==2){
            return 1;
        }else{
            return fib(n-1)+fib(n-2);
        }
    }
}

3.递归访问所有文件

嗯 如题

public class RecursiveFileDemo {
    public static void main(String[] args) {
        getFile(new File("D://一堆奇怪的东西"));
    }
 
    public static void getFile(File file) {
        File[] filelist = file.listFiles();
 
        for (int i = 0; i < filelist.length; i++) {
            if (filelist[i].isDirectory()) {
                getFile(filelist[i]);
            } else {
                System.out.println(filelist[i].getPath());
            }
        }
    }
}
 
--------------------- 
作者:无极之岚 
来源:CSDN 
原文:https://blog.csdn.net/qq_28722667/article/details/52295606 
版权声明:本文为博主原创文章,转载请附上博文链接!

猜你喜欢

转载自blog.csdn.net/qq_35661171/article/details/85069223