《劍指offer》之斐波那契數列
題目:大家都知道斐波那契數列,現在要求輸入一個整數n,請你輸出斐波那契數列的第n項(從0開始,第0項爲0)。n≤39
分析:斐波那契數列以如下被以遞歸的方法定義:F0=0,F1=1,Fn=Fn-1+Fn-2(n>=2,n∈N*),用文字來說,就是斐波那契數列由 0 和 1 開始,之後的斐波那契數列係數就由之前的兩數相加。指的是這樣一個數列:0、1、1、2、3、5、8、13、21、……
解決方案:
-
代碼:
public int Fibonacci(int n) { int first = 0; int last = 1; if(n == 0){ return first; }else if(n == 1){ return last; }else{ for(int i =0;i<=n-2;i++){ last= first + last; first = last - first; } } return last; }
測試性能分析:
運行時間:17ms 佔用內存:9216k
-
使用遞歸實現
代碼:
public int Fibonacci(int n) { if(n==0){ return 0; }else if(n==1||n==2){ return 1; }else if(n==3){ return 2; }else{ return 3*Fibonacci(n-3)+2*Fibonacci(n-4); } }
測試性能分析:
運行時間:25ms 佔用內存:9340k