斐波那契数列算法(C#)
上周抽了一天的時間去6家公司面試,時間太緊都是馬馬虎虎的,好在這趟面試還是有很多收獲的,由此可見自己的理論功底真是差勁的要死,還有語言表達能力。
調侃的來說混了這么久,沒有衣××的理論功底,只有雷××的實干精神,這樣是不行滴,壓根得不到考官們的賞識。
估計給考官的感覺就跟剛畢業的學生差不多一樣,問的問題沒幾個能回答上來的,由此可想而知結果肯定是讓人沮喪的。
這幾年總結了不少東西,可是就是因為自己懶,導致很多學過的東西幾乎沒有一個能記得住的,也沒有相應的筆記,用到方恨少啊,只能Google,時不時的Google直接導致時間的浪費。
所以警戒大家,學習的時候用點心,勤做筆記和總結,沒事的時候翻出來看看加深記憶,這樣比遇到問題就Google的效率要高很多,把Google當作學習工具要比把其當成字典要靠譜很多。
扯了半天蛋,還是進入主題吧,面試中有道筆試題,讓用遞歸寫出求出制定索引的斐波那契數列值。
先不管斐波那契數列是什么玩意,因為當初我也不知道它是什么東西,不過規律很簡單,看過題目就知道索引值都是由前兩個索引值的和求出來的。也就是索引1和索引2特別一點,因為值都為1。
要想了解斐波那契數列請參考維基百科(http://zh.wikipedia.org/wiki/%E6%96%90%E6%B3%A2%E9%82%A3%E5%A5%91%E6%95%B0%E5%88%97)
從來都是敲代碼的而不是在紙上寫代碼,寫出來只能表明我的思路,沒有進行調試運行的結果肯定是錯的。
記得考官看過我寫的一個購物商城站點,結果問我購物車如何實現,一下子就問到我了,支支吾吾半天說不上來,直接就回答我說不出來,估計他以為那個網站是別人寫的我只是拿來充數而已。
說這些還是希望大家多練習,看再多的書,一個例子不去寫,以后在工作中真的什么都做不出來(面試之前還是的復習復習基礎知識,不然到時候會很尷尬的)。
對于那些面試官而言,如果一個程序員有幾年的工作經驗,問一些基礎知識,他們答不上來也是情有可原的,不要因為理論知識而放棄一個好的程序員。畢竟這年頭招人不容易,畢竟我之前也是做過面試官的,記得那時只要來人我不會問任何一個理論知識,只會告訴他們根據最近的項目遇到的問題提出問題讓他們回去寫程序,什么時候寫出來什么時候上班,結果另人失望,居然沒一個來的。畢業生太不靠譜了。
下邊貼出具體實現的代碼,請大家參考。
原理也沒什么復雜的,就是遞歸獲取當前索引的斐波那契數列值,并記錄前一條索引的斐波那契數列值。然后就是兩個相加就是后一條索引的斐波那契數列值
class Program{static void Main(string[] args){/** 費波那西數列(Fibonacci Sequence),又譯費波拿契數、斐波那契數列、費氏數列、黃金分割數列。* 在數學上,費波那西數列是以遞歸的方法來定義:* 用文字來說,就是費波那西數列由 0 和 1 開始,之后的費波那西系數就由之前的兩數相加。首幾個費波那西系數是(OEIS A000045):* 0, 1, 1, 2, 3, 5, 8, 13, 21, 34, 55, 89, 144, 233, 377, 610, 987, 1597, 2584, 4181, 6765, 10946,………………* 特別指出:0不是第一項,而是第零項。*/Console.WriteLine(GetFibonacciSequence(100));}/// <summary>/// 前一索引數列值/// </summary>private static Int64 f0 = 0;/// <summary>/// 當前索引數列值/// </summary>private static Int64 f1 = 1;/// <summary>/// /// </summary>/// <param name="index">索引從0開始</param>/// <returns>返回索引項對應的費波那西數列值</returns>private static Int64 GetFibonacciSequence(int index){#region 0在費波那西數列中比較特殊,因此單獨解決它if (index == 0){return 0;}#endregionfor (int i = 0; i < index; i++){if (i == index - 1)//因為遍歷起始索引為0,故需要對index-1來得到實際索引 {return GetNumBySum(f0, f1);}else{Int64 c = f1;//中間過度值 存儲前一索引值f1 = GetNumBySum(f0, f1);//當前索引數列if (i >= 1){f0 = c;//存儲前一索引數列 }}}return f1;}/// <summary>/// 得到斐波那契數列Fn-1之和Fn-2/// </summary>/// <param name="n1">Fn-1</param>/// <param name="n2">Fn-2</param>/// <returns>總和</returns>private static Int64 GetNumBySum(Int64 n1, Int64 n2){return n1 + n2;}}?大家也可以參考園子內的另一篇文章(http://www.cnblogs.com/cuiweifu/archive/2008/03/05/1091604.html),去面試不講究執行效率,還是死記硬背該文章的代碼,比較靠譜。因為只有短短的4行而已。這里貼出來只是為了大家學習而已。切記學以致用。。。
電腦維修網
轉載于:https://www.cnblogs.com/frlmoney/archive/2013/03/12/2955727.html
《新程序員》:云原生和全面數字化實踐50位技術專家共同創作,文字、視頻、音頻交互閱讀總結
以上是生活随笔為你收集整理的斐波那契数列算法(C#)的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: mysql的慢查询日志
- 下一篇: vmstat备忘