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