递归写法:

public class Test {
   public static void main(String[] args) {
        feibo test = new feibo();
       for (int n = 1; n <= 15; n++) {
            System.out.println(test.feibo(n));
       }

    }
}

class feibo {
public int feibo(int n) {
            if (n == 2||n==1) {
              return 1;
            }
 else {
        return feibo(n - 2) + feibo(n - 1);

        }




        }
        }

动态规划写法(降低时间复杂度):

import java.util.ArrayList;
import java.util.List;
import java.util.Scanner;

/*
 * 递归时间复杂度为2^n
 */

//动态规划求Fibo
class Test2{
    public static void main(String[] args) {
        Scanner scanner  =new Scanner(System.in);
        Main main = new Main();
        while (scanner.hasNext()){
            System.out.println( main.fibo(scanner.nextInt()));
        }

    }
}

class Main{
    public int fibo(int n){
        List<Integer> list  =new ArrayList();
        list.add(1);
        list.add(1);
        for (int i = 2;i < n; i++ ){
            list.add(list.get(i-2)+list.get(i-1));
        }
        return list.get(n-1);

    }

}

 

版权声明:本文为hetaoyuan原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://www.cnblogs.com/hetaoyuan/p/10576902.html