突然发现fibnacci数列数列

来源:互联网 发布:灰度共生矩阵 能量 编辑:程序博客网 时间:2024/04/29 14:45


fibnacci数列大家都知道,可以非常直观的根据递归式完成代码,为什么能非常直观的呢,因为fibnacci数列的递归式的函数定义很简单,因此啊,我觉得用程序写递归算法最难的就是通过归纳得出递归式。


public static int fibnacc(int n) {sum ++;if(n == 0) {return 0;} else if(n == 2) {return 1;} else if(n > 2) {return fibnacc(n-1) + fibnacc(n-2);}return -1;}

int i = fibnacc(43);System.out.println(i);System.out.println(sum);

从感觉上来看,时间久已经很长了。同时发现上面输出为:

267914296
866988873


说明递归层次太多了,当然也存在重复计算的问题。


由于没有在实际项目中用到过,之前没有感觉,看来还是比较恐怖的。


看来还是稍微多写几行代码吧,用迭代循环吧。

public static int fibnacc2(int n) {int prevfirst = 1;int prevseconed = 0;int fibnacc = 0;if (n == 1)return 0;else if (n == 2) {return 1;} else if(n > 2) {for (int i = 1; i <= n - 2; i++) {fibnacc = prevfirst + prevseconed;prevseconed = prevfirst;prevfirst = fibnacc;}return fibnacc;} else {return -1;}}



0 0
原创粉丝点击