三种经典的递归-java



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

 

 

 

 

 

 

你可能感兴趣的:(java)