509.斐波那契数

1.题目描述

斐波那契数,通常用 F(n) 表示,形成的序列称为 斐波那契数列 。该数列由 0 和 1 开始,后面的每一项数字都是前面两项数字的和。也就是:

F(0) = 0,F(1) = 1 F(n) = F(n - 1) + F(n - 2),其中 n > 1 给你 n ,请计算 F(n) 。

2.解题过程

(1)普通递归

最简单的动态规划,题目中已给出转换方程,很容易就能得到以下解法

class Solution {
    public int fib(int n) {
        if (n == 0) {
            return 0;
        }

        if (n == 1) {
            return 1;
        }

        return fib(n-1) + fib(n-2);
    }
}

(2)动态计算

class Solution {
    public int fib(int n) {
        if (n == 0) {
            return 0;
        }
        if (n == 1) {
            return 1;
        }

        int x = 0;
        int y = 1;
        int s = 0;
        int count = 2;
        while (count <= n) {
            s = x + y;
            x = y;
            y = s;
            count++;
        }
        return s;
    }
}

results matching ""

    No results matching ""