作者timeregorge (vincent)
看板Ruby
標題[問題] 請教關於遞迴數列
時間Sat May 3 12:28:28 2014
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://webptt.com/m.aspx?n=bbs/Ruby/M.1399091310.A.D15.html
1F:推 mars90226:你弄錯了,小於二只是因為fibonacci的第0項是0、第1項是 05/03 13:03
2F:→ mars90226:1而以,沒有其他意義。這只是要讓遞迴有終止條件 05/03 13:04
3F:→ mars90226:但是fibonacci第2項是1才對 05/03 13:04
謝謝您的回覆,第0項指的是fibonacci(0)是第0項嗎?所以他計算的是第1項?
但是fibonacci第2項是1又是什麼意思呢?不好意思這部分真的讓我很搞不清楚
※ 編輯: timeregorge (1.175.59.211), 05/03/2014 13:21:19
4F:推 mars90226:fibonacci數列:1,1,2,3,5,8,13,21 ... 05/03 17:11
5F:→ mars90226:每一項都是前面兩項的和,最一開始兩項是1 05/03 17:11
6F:→ mars90226:這只是這個數列的定義而已 05/03 17:12
7F:→ timeregorge:謝謝您的解答,我知道fibonacci是這樣運作,我只是不懂 05/07 12:09
8F:→ timeregorge:if 條件式執行後給出來的結果為什麼是這樣,謝謝您 05/07 12:10
9F:→ timeregorge:不好意思,經過畫圖後..我看懂了謝謝您的解說! 05/07 13:13