[問題] 請教關於遞迴數列

看板Ruby作者 (vincent)時間10年前 (2014/05/03 12:28), 10年前編輯推噓2(207)
留言9則, 2人參與, 最新討論串1/1
def fibonacci(number) if number < 2 number else fibonacci(number - 1) + fibonacci(number - 2) end end puts fibonacci(6) 以上是小弟練習題,執行結果是8 我對上面的流程有一點不懂我知道執行的流程圖是這樣 http://imgur.com/xiSkcjB
至於第一個if條件是小於2的話 加總?或是計算數量? 因為我如果改成<=2結果是13如果算數量2和1的總數是13沒錯 但如果我2改成3結果卻還是13,為什麼呢? -- ※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 1.175.59.211 ※ 文章網址: http://www.ptt.cc/bbs/Ruby/M.1399091310.A.D15.html

05/03 13:03, , 1F
你弄錯了,小於二只是因為fibonacci的第0項是0、第1項是
05/03 13:03, 1F

05/03 13:04, , 2F
1而以,沒有其他意義。這只是要讓遞迴有終止條件
05/03 13:04, 2F

05/03 13:04, , 3F
但是fibonacci第2項是1才對
05/03 13:04, 3F
謝謝您的回覆,第0項指的是fibonacci(0)是第0項嗎?所以他計算的是第1項? 但是fibonacci第2項是1又是什麼意思呢?不好意思這部分真的讓我很搞不清楚 ※ 編輯: timeregorge (1.175.59.211), 05/03/2014 13:21:19

05/03 17:11, , 4F
fibonacci數列:1,1,2,3,5,8,13,21 ...
05/03 17:11, 4F

05/03 17:11, , 5F
每一項都是前面兩項的和,最一開始兩項是1
05/03 17:11, 5F

05/03 17:12, , 6F
這只是這個數列的定義而已
05/03 17:12, 6F

05/07 12:09, , 7F
謝謝您的解答,我知道fibonacci是這樣運作,我只是不懂
05/07 12:09, 7F

05/07 12:10, , 8F
if 條件式執行後給出來的結果為什麼是這樣,謝謝您
05/07 12:10, 8F

05/07 13:13, , 9F
不好意思,經過畫圖後..我看懂了謝謝您的解說!
05/07 13:13, 9F
文章代碼(AID): #1JP71kqL (Ruby)