Bootstrap

斐波那契的理解

今天在看斐波那契的时候感觉还是似懂非懂,记录一下

斐波那契就是从第三项开始,每一项都等于前两项之和。其数值一般为:1、1、2、3、5、8、13、21……。在数学上,这一数列可以用递推的方式定义:F(n)=F(n-1)+F(n-2)(n≥3,n∈N*),也有定义方式认为F(0)=0,F(1)=F(2)=1。

算法实现:

 1.最经典的递归

public static int fibonacciRecursive(int n) {
    if (n <= 2) {
        return 1;
    } else {
        return fibonacciRecursive(n - 1) + fibonacciRecursive(n - 2);
    }
}

 2.遍历

public static int fibonacciRecursive(int n) {
if (n <= 2) {
    return n;
}
int first = 1;
int second = 2;
int next = 0;
for (int i = 3; i <= n; i++) {
    next = first + second;
    //两个变量分别变成下一个值
    first = second;
    second = next;
}

return next;

}

返回一个斐波那契数组:

public static int[] fibonacciArray(int n) {

    int[] arr = new int[n - 1];
    arr[0] = 1;
    arr[1] = 1;
    if (n <= 2) {
        return arr;
    }

    for (int i = 2; i < n - 1; i++) {
         //数组不能变成下个值,因为每个位置都是固定的
        arr[i] = arr[i - 1] + arr[i - 2];
    }

    return arr;
}

;