斐波那契数列

来源:互联网 发布:韩国网络加速器 编辑:程序博客网 时间:2024/06/06 02:56

下午在完成java作业时,碰到了一个非常熟悉的题,求解斐波那契数列项,不过与以前不同的是要求求解的数据是第100项,我想想100也不太大嘛,就用普通的想法做了,也就是下面的code:

int fib(int n){  if (1 == n || 2 == n)    return 1;  else     return fib(n-1)+fib(n-2);}

顺利的编译运行,结果跑了20分钟没见结果。。。。 擦了 这么等下去不是办法 啊 转念想用循环代替递归 发现提干上明确指出要递归 。。。。。。。。。。。。。。。。。。。。。。。。绝路了

。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。

。。。。。。。。。。。。。。。。。。。。。。。。。。。

终于,又搞出了另一种递归,用参数记录中间值的方法来递归 降低问题的复杂度到O(n), 也就是下面的代码

public static long  Fib(int n,long last,long cur, int count)//n表示要求解的位数,last表示前一个数,cur表示当前数,count记录递归次数{if(count == n){return cur;}else{return Fib(n,cur,last+cur,count+1);}}

编译运行,刷的一下结果就出来啦

:1298777728820984005

原创粉丝点击