斐波那契数列
-
问题:数列第n项的值
-
抽象状态F(i):数列第i项的值
-
转移方程:F(i) : F(i-1)+F(i-2)
-
初始状态:我们转移方程需要俩项,才能运行起来,
- F(0) = 0
- F(1) = 1
- 返回F(n)
第一种:递归
public class Solution {
public int Fibonacci(int n) {
if(n == 0)return 0;
if(n == 1 || n == 2)return 1;
int f3 = Fibonacci(n-1)+Fibonacci(n-2);
return f3;
}
}
第二种:非递归
public class TestDemo1 {
public static void main(String[] args) {
//斐波那契非递归(输出第n项的值)
Scanner scan = new Scanner(System.in);
int n = scan.nextInt();
System.out.println(Fibonacci(n));
}
public static int Fibonacci(int n) {
if(n == 0)return 0;
if(n == 1 || n == 2)return 1;
int[] arr = new int[n];
arr[0] = 1;
arr[1] = 1;
for (int i = 2;i < n;i++){
arr[i] = arr[i-1]+arr[i-2];
}
return arr[n-1];
}
}