LeetCode109|斐波那契数列

时间:2022-07-28
本文章向大家介绍LeetCode109|斐波那契数列,主要内容包括其使用实例、应用技巧、基本知识点总结和需要注意事项,具有一定的参考价值,需要的朋友可以参考一下。

0x01,前言闲叙

还记得那年初学编程时的现象,对着黑窗口敲下那一句"hello world"的场景,这就是初学编程语言必须的内容,然而,随着内容的加深,深刻这个词却从未在自己心头进行留下过,我也仅仅这样肤浅的理解着教学里面的编程语言,然而,随着时间流逝,我们面对未来的实习和工作内容,当初学的那点内容不足以撑起我们对编程世界的理解,至今依然是,所以,就有了自己现在的一点一点感触了。

0x02,问题简述

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

0x03,示例

示例 1:

输入:n = 2
输出:1
示例 2:

输入:n = 5
输出:5

0x04,题解思路

使用动态规划的方式进行解决

0x05,题解程序


public class FibTest {
    public static void main(String[] args) {
        int n = 5;
        int a = fib(n);
        System.out.println("a = " + a);
    }

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

0x06,题解程序图片版

0x07,总结一下

对于这道题,我们最常用到的思路就是递归求解,这里也是使用动态规划的方式来做的