您的位置:首页 > 其它

LintCode题解之斐波纳契数列

2017-11-26 03:48 302 查看

 

直接使用递归的方法会导致TLE,加个缓存就好了:

public class Solution {

private Integer[] buff = new Integer[1000];

/*
* @param n: an integer
* @return: an ineger f(n)
*/
public int fibonacci(int n) {
if(buff
!=null) return buff
;
else if(n==1) return buff[1] = 0;
else if(n==2) return buff[2] = 1;
else return buff
 = fibonacci(n-1) + fibonacci(n-2);
}

}

 或者使用迭代法:

public class Solution {

/*
* @param n: an integer
* @return: an ineger f(n)
*/
public int fibonacci(int n) {
if(n==1) return 0;
else if(n==2) return 1;

int a=0, b=1, c=a+b;
n-=2;

while(n-->0){
c = a + b;
a = b;
b = c;
}
return c;
}

}

  

 

题目来源: http://www.lintcode.com/zh-cn/problem/fibonacci/

 

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