zoukankan      html  css  js  c++  java
  • Fibonacci C语言实现

     1 long long int Fibonacci(int n)
     2 {
     3     int i;
     4     long long int *dp, ret;
     5     dp = malloc(sizeof(long long int ) * (n+1));
     6     
     7     dp[0]=0; dp[1] = 1; 
     8     for (i=2; i<= n; i++) {
     9         dp[i] = dp[i-1] + dp[i-2];
    10     }
    11     ret = dp[n];
    12     free(dp);
    13     return ret;
    14 }

    上面就是之前写的代码,看上去能够解决问题,但是今天看了https://www.cnblogs.com/MonsterJ/p/13154306.html 的分析,感觉自己弱爆了,连时间复杂度都没分析.

    直接上时间更优化的代码:

     1  int fib(int N) {
     2         if (N == 0) {
     3             return 0;
     4         }
     5         if (N== 1) {
     6             return 1;
     7         }
     8         int *notes = malloc(sizeof(int) * (N+1));
     9         if (notes == NULL) 
    10             return -1;
    11         
    12         notes[0] = 0;
    13         notes[1] = 1;
    14        int i;
    15         for( i = 2; i <= N; i++) {
    16             notes[i] = notes[i-1] + notes[i-2];
    17         }
    18         int res = notes[N];
    19         free(notes);
    20         return  res;
    21     }

    再上空间上更简化的代码:

     int fib(int N) {
            int a = 0;
            int b = 1;
            if(N == 0) {
                return a;
            }
            if(N == 1) {
                return b;
            }
            for(int i = 2; i <= N; i++) {
                int tmp = a + b;
                a = b;
                b = tmp;
            }
            return b;
        }
  • 相关阅读:
    《css世界》学习摘要
    微信小程序知识点积累
    事件冒泡 事件委派
    遍历后台返回数据
    初识open stack
    keystone初识
    KVM详解
    openstack详解
    NoSQL之Redis集群理论
    gfs分布式文件系统
  • 原文地址:https://www.cnblogs.com/micoblog/p/12986431.html
Copyright © 2011-2022 走看看