这个斐波那契代码(Ruby)是如何工作的?

How this Fibonacci code(Ruby) works?

我了解斐波那契公式的工作原理,但不了解递归部分。 例如,fib(4) 将调用 fib(3) + fib(2),然后呢?该方法如何确定 fib(3) 和 fib(2) 的值?我是 Ruby 的初学者所以请原谅我问一个菜鸟问题。

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

递归通过一次又一次地调用自身来工作,直到 'break point' 发生。 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

如果你想深入研究这里一些链接

https://www.dotnetperls.com/fibonacci-ruby

http://www.mattmorgante.com/technology/algorithms