• 【数据结构*转】斐波那契数列


    斐波那契数列: 
    f(n)=f(n-1)+f(n-2)(n>2) f(0)=1;f(1)=1; 

    1 递归调用

    public static long Fib(long N){
    if (N == 0){
    return 0;
    }
    if (N < 3) return 1; else return Fib(N-1) + Fib(N-2); }

    此种方法的缺陷:重复计算的次数太多,效率低

    例如:在下图中,F(3)就重复计算了 "3次"

    时间复杂度:O(2^N)  空间复杂度:O(N)

    2 循环

    public int Fibonacci(int n) {
            int first = 1;
            int second = 1;
            int ret = 1;
            if(n == 0){
                return 0;
            }
            if(n < 3){
                return 1;
            }
            for(int i = 3; i <= n ; i++){
                ret = first + second;
                first = second;
                second = ret;
            }
            return second;
        }

    时间复杂度:O(N)
    空间复杂度:O(1)(创建了四个对象,是常数,所以可忽略不计)
    此种方法是"最优方法"
    优点:时间复杂度和空间复杂度最低,而且可读性高

  • 相关阅读:
    数据库设计三大范式
    MYSQL语句
    PHP数据库环境配置
    java空心菱形
    java基础练习2
    java基础练习
    java 控制台输入
    java 基础功能
    Java包装
    JS里的DOM操作注意点
  • 原文地址:https://www.cnblogs.com/whutwxj/p/9364887.html
Copyright © 2020-2023  润新知