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

来源:互联网 发布:java json转string 编辑:程序博客网 时间:2024/05/21 09:20

裴波那契数列的第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));    }}
0 0
原创粉丝点击