public class TestDiGui {
public static void main(String[] args) {
// TODO Auto-generated method stub
System.out.println(f(5));
for (int i = 1; i <= 20; i++) {
System.out.print(f(i) + " ");
}
System.out.println();
System.out.println("=====================");
System.out.println(f(5));
for (int i = 1; i <= 20; i++) {
System.out.print(f2(i) + " ");
}
}
/**
* 递归算法实现
*
* @param n
* @return
*/
public static long f(int n) {
if (n == 1 || n == 2) {
return 1;
} else {
return f(n - 1) + f(n - 2);
}
}
/**
* 非递归实现
*
* @param n
* @return
*/
public static long f2(int n) {
int[] a = new int[n + 1];
a[0] = 0;
a[1] = 1;
for (int i = 2; i <= n; i++) {
a[i] = a[i - 1] + a[i - 2];
}
return a[n];
}
}
结果:
5
1 1 2 3 5 8 13 21 34 55 89 144 233 377 610 987 1597 2584 4181 6765
=====================
5
1 1 2 3 5 8 13 21 34 55 89 144 233 377 610 987 1597 2584 4181 6765