Java递归求费数列和_Java实现用递归算法和非递归算法求解斐波那契数列问题

public class Foo {

public static void main(String[] args) {

int result1 = 0;

int result2 = 0;

result1 = diGui(30);

result2 = feiDiGui(30);

System.out.println("递归结果:" + result1);

System.out.println("非递归结果:" + result2);

for (int i = 1; i <= 30; i++) {

System.out.println(diGui(i) + "----" + feiDiGui(i));

}

}

/**

* 递归算法

*/

public static int diGui(int i) {

if (i <= 0) {

return 0;

} else if (i <= 2) {

return 1;

} else {

return diGui(i - 1) + diGui(i - 2);

}

}

/**

* 非递归算法

*/

public static int feiDiGui(int i) {

if (i <= 0) {

return 0;

} else if (i <= 2) {

return 1;

} else {

int[] a = new int[i];// 保存f(i)的值

a[0] = 1;

a[1] = 1;

for (int j = 3; j <= i; j++) {

a[j - 1] = a[j - 2] + a[j - 3];

}

return a[i - 1];// 返回数组中的最后一个数即f(i)

你可能感兴趣的:(Java递归求费数列和)