Ruby已经知道斐波那契序列了吗?

  • 本文关键字:Ruby ruby recursion fibonacci
  • 更新时间 :
  • 英文 :


使用以下方法查找斐波那契数列中的第n个数:

def fibonacci(number)
if number < 2
number
else
fibonacci(number - 1) + fibonacci(number - 2)
end
end
puts fibonacci(6)

答案是8(如果您从1开始计数而不是0(0,1,1,2,3,5,8…),则是序列中的第六个数字)

上面的代码只是处理序列中数字的位置,对吗?那么Ruby是如何知道一个数字在给定位置上的值的呢?换句话说,Ruby是如何知道fibonacci(4)的值是3的?斐波那契数列已经内置到Ruby中了吗?

不,序列不是内置的。

fibonacci是递归函数。它将被调用9次(!)来计算fibonacci(4)以获得3。(顺便说一下,这是一种很糟糕的计算斐波那契数的方法。25次呼叫fibonacci(6)!它至少应该记住以前的计算。)

那么Ruby是如何知道一个数字在给定位置的值的呢?

它还不知道。它会发现,作为这个方法的一部分。为了找出这个位置的值,它首先计算所有之前位置的所有数字的所有值。

Ruby怎么知道fibonacci(4)的值是3

因为为了计算fibonacci(4),首先要调用fibonacci(3)。算法是递归的。

最新更新