<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>

          斐波那契數(shù)列-爬樓梯算法

          共 1364字,需瀏覽 3分鐘

           ·

          2021-12-16 05:26


          爬樓梯算法

          有n級(jí)樓梯,有2種爬法,1次1級(jí),或1次2級(jí),問(wèn),n級(jí)樓梯有多少種爬法?

          遞歸求解

          首先,當(dāng)只有一階樓梯的時(shí)候,很顯然只有一種走法;有兩階樓梯的時(shí)候,也很顯然的知道有兩種走法。就會(huì)有下面這句判斷語(yǔ)句。


          if (n == 1 || n == 2) {  return n}


          一階二階的思想就出來(lái)了,那如果當(dāng)階數(shù)是三階四階甚至n階的時(shí)候呢?


          當(dāng) n > 2 時(shí),第一次跳一級(jí)還是兩級(jí),決定了后面剩下的臺(tái)階的跳法數(shù)目的不同:如果第一次只跳一級(jí),則后面剩下的 n-1 級(jí)臺(tái)階的跳法數(shù)目為 f(n-1);如果第一次跳兩級(jí),則后面剩下的n-2 級(jí)臺(tái)階的跳法數(shù)目為 f(n-2)。所以,得出遞歸方程,f(n) = f(n-1) + f(n-2)。問(wèn)題本質(zhì)是斐波那契數(shù)列。


          聊著聊著我們的代碼就出來(lái)了。


          var climbStairs = function (n) {  if (n == 1 || n == 2) {    return n  }  else {    return climbStairs(n - 2) + climbStairs(n - 1)  }}

          斐波那契數(shù)列

          斐波那契數(shù)列(Fibonacci sequence),又稱黃金分割數(shù)列,因數(shù)學(xué)家萊昂納多·斐波那契(Leonardo Fibonacci)以兔子繁殖為例子而引入,故又稱為“兔子數(shù)列”,指的是這樣一個(gè)數(shù)列:0、1、1、2、3、5、8、13、21、34、……在數(shù)學(xué)上,斐波那契數(shù)列以如下被以遞推的方法定義:F(0)=0,F(xiàn)(1)=1, F(n)=F(n - 1)+F(n - 2)(n ≥ 2,n ∈ N*)


          我們現(xiàn)在回到兔子問(wèn)題。


          假設(shè)一對(duì)初生兔子要一個(gè)月才到成熟期,而一對(duì)成熟兔子每月會(huì)生一對(duì)兔子,那么,由一對(duì)初生兔子開(kāi)始,12 個(gè)月后會(huì)有多少對(duì)兔子呢?



          我們按照規(guī)則,畫(huà)出了1-7月份兔子的繁殖情況。我們發(fā)現(xiàn)1-7月份兔子的數(shù)量分別為1, 1, 2, 3, 5, 8, 13對(duì)。為了更清晰一點(diǎn),我們作出下面的示意圖。



          顯然在圖中,我們的黑點(diǎn)表示的是成熟兔子,白點(diǎn)表示的是小兔子。我們夠仔細(xì)的話能夠發(fā)現(xiàn),右邊這一列數(shù)字是有規(guī)律的。第一個(gè)數(shù)和第二個(gè)數(shù)為1,之后的每一個(gè)數(shù)為之前兩個(gè)數(shù)之和。比如,六月份的兔子數(shù)量為四月份和五月份兔子數(shù)量之和,即8=5+3。


          var climbStairs = function (n) {  if (n == 1 || n == 2) {    return 1  }  else {    return climbStairs(n - 2) + climbStairs(n - 1)  }}

          因此,兔子問(wèn)題得以解決,答案為144對(duì)。以上數(shù)列,即“斐波那契數(shù)列”。

          總結(jié)

          斐波那契數(shù)列的自身特性:0, 1, 1, 2, 3, 5, 8, 13, 21, 34, 55, 89, 144, 233……


          第一項(xiàng)和第二項(xiàng)是1,之后的每一項(xiàng)為之前兩項(xiàng)的和。即:

          a1=a2=1

          an=an-1+an-2 (n為正整數(shù))


          瀏覽 91
          點(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>
                  大香蕉尹人视频 | 国产一区俺也去 | 中文字幕无码播放 | 婷婷五月天丁香激情 | 亚洲无码视频在线观看高清 |