裴波那契数列的第n项,可以很简单的使用递归,但是递归很多层之后有可能会造成栈溢出,而且速度也不一定会快。只是方法简单了,当面临大量的计算层数的时候递归并不是很好的选择。改进方法就是保存每次计算的结果,下一次计算的时候可以调用。
package others;
import stringTest.replaceBlank;
import SortTest.insertSortTest;
/**
* 求裴波那契数列的第n项
*
* @author duola
*
*/
public class peiBoNaQie {
// 方法1,使用递归
private static int pbnq(int n) {
if (n == 0)
return 0;
if (n == 1)
return 1;
return pbnq(n - 1) + pbnq(n - 2);
}
// 方法2,改进递归,每次保存上一次的结果
private static long pbnq2(int n) {
if (n == 0)
return 0;
if (n == 1)
return 1;
long one = 1;
long two = 1;
long targ = 0;
for (int i = 2; i <= n; i++) {
targ = one + two;
two = one;
one = targ;
}
return targ;
}
public static void main(String[] args) {
System.out.print("\t" + pbnq(10));
System.out.print("\t" + pbnq2(10));
}
}