这个斐波那契代码(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
如果你想深入研究这里一些链接
我了解斐波那契公式的工作原理,但不了解递归部分。 例如,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
如果你想深入研究这里一些链接