这个Fibonacci代码(Ruby)如何工作?

时间:2016-11-25 09:13:32

标签: ruby recursion fibonacci

我理解Fibonacci的公式是如何工作的,而不是递归部分。 例如,fib(4)将调用fib(3)+ fib(2),那么什么?该方法如何确定fib(3)和fib(2)的值?我是Ruby的初学者,请原谅我问一个noob问题。

def fib num
    return num if(0..1).include? num
    fib(num-1) + fib(num-2)
end

2 个答案:

答案 0 :(得分:4)

递归通过一次又一次地自我调用直到“断点”为止。发生。 Fib(4)需要fib(3)和fib(2),fib(3)需要fib(2)和fib(1)......方法给出fib(1)和fib(0)的值为1。

让我试着用眼睛解释一下:

> fib(4) =         fib(3)                 +            fib(2) 
> =>       fib(2)        +   fib(1)       +        fib(1)  +  fib(0)
> =>   fib(1) + fib(0)   +   1            +          1     +   1

答案 1 :(得分:1)