斐波那契数列

下午在完成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

你可能感兴趣的:(列)