首页 > 其他 > 详细

斐波那契数列

时间:2020-03-05 21:49:09      阅读:52      评论:0      收藏:0      [点我收藏+]

1:题目描述

写一个函数,输入 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

来源:力扣(LeetCode)
链接:https://leetcode-cn.com/problems/fei-bo-na-qi-shu-lie-lcof
著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。

2:题目分析

2.1:递归法

这种题目很容易使用递归法来解决,但是带来的问题就是递归处每一个数据都是用F(1)和F(0)组合而来,而再计算过程中,不保存这些中间变量,所以导致大量的重复计算过程。

技术分享图片

2.2:DP法

正是由于上面递归法的过程带来的问题,我们尝试保存一些中间变量,并且改变我们解决问题的顺序,再递归中我们是每次冲顶往根的寻找数据,所以会造成大量的重复计算。然后如果我们每次从根部开始向顶部计算,则每次结果都保存下来,则再新的需求是,直接再对应位置提出出来即可。代码如下

3:解决代码

class Solution {
    public int fib(int n) {
        int[] arr = new int[n+2];
        arr[0] = 0;
        arr[1] = 1;
        for(int i=2;i<=n;i++){
            arr[i] = (arr[i-1]+arr[i-2])%1000000007;
        }
        return arr[n];
    }
}

 

斐波那契数列

原文:https://www.cnblogs.com/dazhu123/p/12422652.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!