java求解斐波那契数列

斐波那契数列描述
F(0) = 0, F(1) = 1
F(N) = F(N - 1) + F(N - 2), 其中 N > 1
N > 1后每个数都等于前两个数之和,如下:
0,1,1,2,3,5,8 …

下面介绍两种解法

1. 动态规划法
以斐波那契数列性质 f(n + 1) = f(n) + f(n - 1)为转移方程。不多说直接上代码:

public int fib(int n) {
        int a = 1, b = 1 , sum;
        for (int i = 0; i < n; i++) {
            sum = a +b;
            a = b;
            b = sum;
        }
        return a;
    }

2. 递归
看到f(n + 1) = f(n) + f(n - 1)这样的公式自然想到递归,上代码:

public int fib(int n) {
        if (n < 2) return 1;
        return  fib(--n) + fib(--n);
    }

递归的代码很短,但是容易造成StackOverflowError。

©️2020 CSDN 皮肤主题: 数字20 设计师:CSDN官方博客 返回首页