zoukankan      html  css  js  c++  java
  • 动态规划求斐波那契数列

    1.递归方式

    public static void main(String[] args) {
        long start=System.currentTimeMillis();
        System.out.println(start);
        System.out.println(fibonacci(50));
        long end=System.currentTimeMillis();
        System.out.println(end);
        System.out.println("用时:"+(end-start)+"ms");
    }
    
    public static double fibonacci(int n){
       if(n==0){
           return 0;
       }
       if(n==1){
           return 0;
       }
       if(n==2){
           return 1;
       }
       return fibonacci(n-2)+fibonacci(n-1);
    }

     可以看到递归的方式,效率非常低,非常耗时,而且求大一点的数的时候,可能会直接溢出

    2. 动态规划

    public static void main(String[] args) {
        long start=System.currentTimeMillis();
        System.out.println(start);
        System.out.println(fibonacci(50));
        long end=System.currentTimeMillis();
        System.out.println(end);
        System.out.println("用时:"+(end-start)+"ms");
    }
    
    public static double fibonacci(int n){
        if(n==0){
            return 0;
        }
        double [] temp=new double[n];
        temp[0]=0;
        temp[1]=1;
        if(n>1){
            for(int i=2;i<n;i++){
                temp[i]=temp[i-1]+temp[i-2];
            }
        }
        return temp[n-1];
    }

     对比一下,动态规划的效率比递归快了不止一个量级

  • 相关阅读:
    完全二分图生成树计数
    [luogu 1880]石子合并
    [vijos 1770]大内密探
    母函数入门笔记(施工中…
    【补】20160816训练记录
    20160819训练记录
    20160817训练记录
    POJ 2228 naptime
    POJ 3585 Accumulation Degree
    POJ 2182 Lost Cows
  • 原文地址:https://www.cnblogs.com/luo-jian/p/12882798.html
Copyright © 2011-2022 走看看