Fibonacci数列
1.定义:
0, 1, 1, 2, 3, 5, 8, 13, 21, . . .;
f0 = 0, f1 = 1, fn= fn−1 + fn−2 for n ≥ 2.
2.两种实现算法:2.1递归(recursive)
-
- T(n)=T(n−1)+T(n−2)>2T(n−2)>22T(n−4)>...>2n/2T(n−n)
- T(n)>2n/2
- T(n)=Ω(2n/2)
2.2循环(iterative)
T(n)=n
3.两种算法java代码实现:
3.1算法1:
public class Fibonacci1
{public static int fibonacci(int n){if(n==0) return 0;else if(n==1) return 1;else return fibonacci(n-1)+fibonacci(n-2);}public static void main(String[] args){for(int i=0;i<10;i++) System.out.println(fibonacci(i));}
}
3.2算法2:
public class Fibonacci2 {public static void fibonacci(int n){int n0=0,n1=1,n2=0;System.out.println(n0);//输出第一个值for(int i=1;i<n;i++){n2=n0+n1;n0=n1;n1=n2; System.out.println(n0);}}public static void main(String[] args){fibonacci(10);}
}
两段代码运行结果均为: