今天在看斐波那契的时候感觉还是似懂非懂,记录一下
斐波那契就是从第三项开始,每一项都等于前两项之和。其数值一般为: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; }