zoukankan      html  css  js  c++  java
  • 斐波那契数列

    写一个函数,输入 n ,求斐波那契(Fibonacci)数列的第 n 项。斐波那契数列的定义如下:

    F(0) = 0,   F(1) = 1
    F(N) = F(N - 1) + F(N - 2), 其中 N > 1.

    斐波那契数列由 0 和 1 开始,之后的斐波那契数就是由之前的两数相加而得出。

    答案需要取模 1e9+7(1000000007),如计算初始结果为:1000000008,请返回 1。

    示例 1:

    输入:n = 2
    输出:1

    示例 2:

    输入:n = 5
    输出:5

    提示:

    • 0 <= n <= 100

    注意:对最终结果取余等价与循环过程中取余

    题解1:

    直接递归肯定会超时,所以自下而上,以空间换时间

     1 public int fib(int n) {
     2 
     3         if(n==0) return 0;
     4         if(n==1) return 1;
     5         int[] dp=new int[n+1];
     6         dp[1]=1;
     7         for(int i=2;i<=n;i++)
     8             dp[i]=(dp[i-1]+dp[i-2])%1000000007;
     9         return dp[n];
    10     }

    题解2:

    因为所求值只和他的前俩个状态有关,如f(4)=f(3)+f(2),所以只需要用俩个变量保存f(3),f(2)即可

    1  public int fib(int n) {
    2         int a = 0, b = 1, sum;
    3         for(int i = 0; i < n; i++){
    4             sum = (a + b) % 1000000007;
    5             a = b;
    6             b = sum;
    7         }
    8         return a;
    9     }

    此种方法有很多细节,如i<n   return a等,都比较高明

    自己按流程走一遍可以理解的更加透彻


    链接:https://leetcode-cn.com/problems/fei-bo-na-qi-shu-lie-lcof

  • 相关阅读:
    2019/10/9 CSP-S 模拟测
    简单的面向对象
    魔术变量
    函数
    全局变量
    超级全局变量
    for循环
    while循环
    php数组排序
    python打造XslGenerator
  • 原文地址:https://www.cnblogs.com/treasury/p/12597419.html
Copyright © 2011-2022 走看看