您的位置:首页 > 其它

求裴波那契数列的第n项---递归+改进

2016-06-02 11:13 162 查看
裴波那契数列的第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));
}

}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  递归 裴波那契