<kbd id="afajh"><form id="afajh"></form></kbd>
<strong id="afajh"><dl id="afajh"></dl></strong>
    <del id="afajh"><form id="afajh"></form></del>
        1. <th id="afajh"><progress id="afajh"></progress></th>
          <b id="afajh"><abbr id="afajh"></abbr></b>
          <th id="afajh"><progress id="afajh"></progress></th>

          題目2. 斐波那契數(shù)列

          共 1146字,需瀏覽 3分鐘

           ·

          2021-10-12 08:32

          ????????在面試美團(tuán)的時(shí)候面試官給我出了這么一道類似的題目,給我一組數(shù)組,判斷里面的數(shù)字是否為斐波那契數(shù)列中的元素,并標(biāo)記這些元素在斐波那契數(shù)列中的下標(biāo)。然后按照順序輸出出來。數(shù)組是隨意的。


          ????????當(dāng)時(shí)聽到這個(gè)題目的時(shí)候我是一臉懵逼,因?yàn)槲也恢漓巢瞧鯏?shù)列是怎么回事。經(jīng)過面試官的解說之后,我開始思考這個(gè)東西怎么實(shí)現(xiàn)。然后用筆在會(huì)議室的墻上畫了畫,最后猛然醒悟這是一個(gè)遞歸。然后我一氣呵成,找到遞歸結(jié)束條件,將代碼完成了。之后又用HashMap進(jìn)行了一些優(yōu)化。面試下來,面試官說我的基礎(chǔ)算法還是不錯(cuò)的,推理的過程也很符合邏輯,就是......,然后讓我回去等消息去了。


          今天我們先來完成leetcode中的一道小題509題。


          斐波那契數(shù),通常用 F(n) 表示,形成的序列稱為斐波那契數(shù)列。該數(shù)列由 0 和 1 開始,后面的每一項(xiàng)數(shù)字都是前面兩項(xiàng)數(shù)字的和。也就是:


          F(0) = 0,? ?F(1) = 1

          F(N) = F(N - 1) + F(N - 2), 其中 N > 1.

          給定 N,計(jì)算F(N).


          示例 1:

          輸入:2

          輸出:1

          解釋:F(2) = F(1) + F(0) = 1 + 0 = 1.




          代碼如下,這個(gè)問題相通了就會(huì)非常簡(jiǎn)單,腦容量不夠那就會(huì)和遞歸算法一樣,導(dǎo)致棧溢出異常。遞歸結(jié)束條件就是數(shù)列前兩個(gè)數(shù),因此下標(biāo)為1不是0。然后每個(gè)方法的結(jié)果依次從虛擬機(jī)棧中彈出,帶給棧中的下一個(gè)方法進(jìn)行計(jì)算。直到彈出完成,就得到了最后的結(jié)果。


          public class FibonacciSequence {

          public static void main(String[] args) {

          int[] fibIndexArr = new int[]{1,2,3,4,5,6,7,8,9};
          int[] fibArr = new int[fibIndexArr.length];

          for (int index : fibIndexArr) {
          int element = fib(index);
          fibArr[index-1] = element;
          }
          for (int element : fibArr) {
          System.out.print(element+" ");
          }
          }

          /**
          *
          * @param N
          * @return
          */
          private static int fib(int N){
          if (N <= 1) {
          return N;
          }
          return fib(N-1) + fib(N-2);
          }
          }



          輸出結(jié)果如下:


          1 1 2 3 5 8 13 21 34 。


          虛擬機(jī)棧方法彈出順序如下圖所示:遞歸鏈條過長(zhǎng),必然會(huì)導(dǎo)致StackOverFlowException。因?yàn)樘摂M機(jī)棧長(zhǎng)度肯定是有規(guī)定的。


          c2b1a2b4dca4c65743798c56175a4298.webp


          瀏覽 43
          點(diǎn)贊
          評(píng)論
          收藏
          分享

          手機(jī)掃一掃分享

          分享
          舉報(bào)
          評(píng)論
          圖片
          表情
          推薦
          點(diǎn)贊
          評(píng)論
          收藏
          分享

          手機(jī)掃一掃分享

          分享
          舉報(bào)
          <kbd id="afajh"><form id="afajh"></form></kbd>
          <strong id="afajh"><dl id="afajh"></dl></strong>
            <del id="afajh"><form id="afajh"></form></del>
                1. <th id="afajh"><progress id="afajh"></progress></th>
                  <b id="afajh"><abbr id="afajh"></abbr></b>
                  <th id="afajh"><progress id="afajh"></progress></th>
                  51成人做爰www免费看网站 | 自拍视频青娱乐 | 极品视觉盛宴 | 激情五月天网站 | 亚洲综合99 |