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

作者: timeregorge (Nick)   2014-05-03 12:28:28
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,為什麼呢?
作者: mars90226 (火星人)   2014-05-03 13:03:00
你弄錯了,小於二只是因為fibonacci的第0項是0、第1項是
作者: mars90226 (火星人)   2014-05-03 13:04:00
1而以,沒有其他意義。這只是要讓遞迴有終止條件但是fibonacci第2項是1才對
作者: mars90226 (火星人)   2014-05-03 17:11:00
fibonacci數列:1,1,2,3,5,8,13,21 ...每一項都是前面兩項的和,最一開始兩項是1
作者: mars90226 (火星人)   2014-05-03 17:12:00
這只是這個數列的定義而已
作者: timeregorge (Nick)   2014-05-07 12:09:00
謝謝您的解答,我知道fibonacci是這樣運作,我只是不懂
作者: timeregorge (Nick)   2014-05-07 12:10:00
if 條件式執行後給出來的結果為什麼是這樣,謝謝您
作者: timeregorge (Nick)   2014-05-07 13:13:00
不好意思,經過畫圖後..我看懂了謝謝您的解說!

Links booklink

Contact Us: admin [ a t ] ucptt.com