[问题] 请教关于递回数列

楼主: 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