递归调用与斐波那问题

---恢复内容开始---

// ①一般递归,如:求阶乘,累加。

public class Digui {
    /**
     * @author likainian 1784186573@qq.com
     */
    public static int sum(int n) {
        if (n == 1) {
            return 1;
        }
        return sum(n - 1) * n;
    }

    public static void main(String[] args) {
        System.out.println(sum(5));
    }
}

//②递归在波菲那数列的用法
/*
 * 波菲那数列:1,1,2,3,5,8,13,21...
 */

class TestFibona{
    public int sum(int n){
        if(n==1||n==2){
            return 1;
        }
        return sum(n-1)+sum(n-2);
    }
    public static void main(String[]args){
        TestFibona test=new TestFibona();
        System.out.println(test.sum(24));
    }
}

/*练习:
 *猴子吃桃问题。
 *猴子第一天摘下若干个桃子,当即吃了一半,还不过瘾,又多吃了一个。
 *第二天早上又将剩下的桃子吃掉一半,又多吃一个。
 *以后每天早上都吃了前一天剩下的一半零一个。
 *到第10天早上想再吃时,就只剩一个桃子了。求第一天共摘多少个桃子。
 */

class Monkey{
    public int tao(int n){
        if(n==10){
            return 1;
        }
        return 2*(tao(n+1)+1);
    }
    public static void main(String[]args){
        Monkey t=new Monkey();
        int num=t.tao(1);
        System.out.println(num);
    }
}

//③递归在遍历删除文件夹及其所以子文件中的用法。

import java.io.File;
class TestDir3 {
    public static void main(String[] args) {
        File dir=new File("d:folder01");
        listDir(dir);
    }
    private static void listDir(File dir){
        //遍历所有子文件,递归调用。
        File[] children=dir.listFiles();
        for(File child:children){
            if(child.isDirectory()){
                listDir(child);
            }else{
                child.delete();
            }
        }
        dir.delete();
    }
}

---恢复内容结束---

原文地址:https://www.cnblogs.com/String-likainian/p/5824526.html