作者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/cn.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