【发布时间】:2016-07-26 03:24:33
【问题描述】:
我在网上找到了一个计算斐波那契数列的算法。我觉得有点像个傻瓜,但我不知道它是如何工作的!
def fib(n)
if n == 0 || n == 1
return n
end
if n >= 2
return fib(n-1) + fib(n-2)
end
end
如果我调用参数为 10 的方法,为什么它不返回 18?我假设这里发生了一些递归,但我不知道。有人可以帮我理解这一点吗?
【问题讨论】:
-
用 10 调用它会返回什么?为什么要18?第十个斐波那契数是 55。
-
是的,它是递归。 here 是一个很好的教程,涵盖了递归斐波那契
-
也许是因为 18 不是斐波那契数?!您发布的代码似乎正确。
-
这是非常低效的算法,顺便说一句:)