<span style="font-family:Arial, Helvetica, sans-serif;"><span style="white-space: normal;">
</span></span>package test;
/**
* 题目:定义Fibonacci数列如下:
/ 0 n=0 f(n)= 1 n=1 /
f(n-1)+f(n-2) n=2
* 输入n,用最快的方法求该数列的第n项。 分析:在很多C语言教科书中讲到递归函数的时候,都会用Fibonacci作为例子。
* 因此很多程序员对这道题的递归解法非常熟悉,但....呵呵,你知道的。。
*
* @author Zealot
*
*/
public class MS_19 {
<span style="white-space:pre"> </span>/**
<span style="white-space:pre"> </span> * 递归
<span style="white-space:pre"> </span> * @param n
<span style="white-space:pre"> </span> * @return
<span style="white-space:pre"> </span> */
<span style="white-space:pre"> </span>private int fibonacci1(int n) {
<span style="white-space:pre"> </span>if (n == 0) {
<span style="white-space:pre"> </span>return 0;
<span style="white-space:pre"> </span>} else if (n == 1) {
<span style="white-space:pre"> </span>return 1;
<span style="white-space:pre"> </span>} else {
<span style="white-space:pre"> </span>return fibonacci1(n - 1) + fibonacci1(n - 2);
<span style="white-space:pre"> </span>}
<span style="white-space:pre"> </span>}
<span style="white-space:pre"> </span>public static void main(String[] args) {
<span style="white-space:pre"> </span>MS_19 ms19 = new MS_19();
<span style="white-space:pre"> </span>System.out.println(ms19.fibonacci2(6));
<span style="white-space:pre"> </span>}
<span style="white-space:pre"> </span>
<span style="white-space:pre"> </span>/**
<span style="white-space:pre"> </span> * 循环
<span style="white-space:pre"> </span> * 时间复杂度是O(n)
<span style="white-space:pre"> </span> * @param n
<span style="white-space:pre"> </span> * @return
<span style="white-space:pre"> </span> */
<span style="white-space:pre"> </span>private int fibonacci2(int n) {
<span style="white-space:pre"> </span>int[] a = new int[n+1];
<span style="white-space:pre"> </span>a[0] = 0;
<span style="white-space:pre"> </span>a[1] = 1;
<span style="white-space:pre"> </span>for (int i = 2; i <= n; i++) {
<span style="white-space:pre"> </span>a[i] = a[i - 1] + a[i - 2];
<span style="white-space:pre"> </span>}
<span style="white-space:pre"> </span>return a[n];
<span style="white-space:pre"> </span>}
}