LintCode題解之斐波納契數列
阿新 • • 發佈:2017-11-26
fibonacci [1] mage ntc 緩存 img pub cci https
直接使用遞歸的方法會導致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[n]!=null) return buff[n]; else if(n==1) return buff[1] = 0; else if(n==2) return buff[2] = 1; else return buff[n] = 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/
LintCode題解之斐波納契數列