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];
    }

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

  • 相关阅读:
    数据类型之间的转换(int ,str ,bool)
    字符串的操作及其部分格式化
    逻辑运算符
    格式化输出
    @Resource、@Autowired、@Qualifier
    maven环境搭建
    oracle 用户管理
    volatile关键字
    Ajax
    拷贝InputStream
  • 原文地址:https://www.cnblogs.com/luo-jian/p/12882798.html
Copyright © 2011-2022 走看看