• 递归算法及优化


     1 package interview;
     2 //有一个斐波那契数列计算的函数,最前面的k个数为1,后面的没一位是前k位之和,例如k=4,该函数
     3 //该函数返回值为1,1,1,1,4,7,13,25,49
     4 public class RecursiveOptimize {
     5     static int  fib_k(int n,int k) {
     6          if(n<k) 
     7             return 1;
     8          int result = 0;
     9          for(int i=0;i<k;i++){
    10              result += fib_k(n-i-1,k);
    11          }
    12          return result;
    13     }
    14     static int fib_k_optimize(int n,int k) {
    15         if(n<k)
    16             return 1;
    17         int[] fib = new int[n+1];
    18         for(int i=0;i<k;i++){
    19             fib[i]=1;
    20         }
    21         for(int i=k;i<=n;i++) {
    22             int result = 0;
    23             for(int j=0;j<k;j++){
    24                 result += fib[i-j-1];
    25             }
    26             fib[i]=result;
    27         }
    28         return fib[n];
    29     }
    30     public static void main(String[] args) {
    31         long start = System.nanoTime();
    32         for(int i=0;i<20;i++){
    33             System.out.print(fib_k(i,4)+" ");
    34         }
    35         long end = System.nanoTime();
    36         System.out.println("
    "+(end-start));
    37         
    38         //===================================
    39         start = System.nanoTime();
    40         for(int i=0;i<20;i++){
    41             System.out.print(fib_k_optimize(i,4)+" ");
    42         }
    43         end = System.nanoTime();
    44         System.out.println("
    "+(end-start));
    45     }
    46     
    47 }
    When things go wrong,don't go with them.
  • 相关阅读:
    C#获取动态代码的值
    C#winform圆角窗体绘制
    linux下安装jdk&&Tomcat环境
    一些linux基础命令
    linux下安装python3
    迭代器和生成器
    内置函数
    PythonTwo
    yum对于包和软件的安装、升级和卸载总结
    Python基础
  • 原文地址:https://www.cnblogs.com/yqy921/p/5570851.html
Copyright © 2020-2023  润新知