Ruby是否内置了斐波那契序列的计算能力?
首先明确结论:斐波那契序列没有内置在Ruby中,你看到的所有计算逻辑都来自你写的这个递归函数,完全是按照斐波那契数列的数学定义实现的,没有用到Ruby的相关内置能力。
函数运行逻辑说明
你写的这个递归函数直接对应了斐波那契数列的标准定义:
- 当入参(序列索引)小于2时,直接返回入参本身,也就是
fibonacci(0) = 0、fibonacci(1) = 1 - 当入参大于等于2时,返回前两项的和,也就是
fibonacci(n) = fibonacci(n-1) + fibonacci(n-2)
你疑惑的fibonacci(4) = 3的结果,是函数层层递归计算出来的,推导过程如下:
fibonacci(4) = fibonacci(3) + fibonacci(2) = (fibonacci(2) + fibonacci(1)) + (fibonacci(1) + fibonacci(0)) = ((fibonacci(1) + fibonacci(0)) + 1) + (1 + 0) = ((1 + 0) + 1) + 1 = 3
关于你提到的“仅处理位置”的疑问
这个判断是对的:你传入的参数就是斐波那契序列的索引位置,函数本身只需要拿到位置,就能按照上面的定义递归推导出对应位置的数值,不需要提前存储整个序列。
内容的提问来源于stack exchange,提问作者Steve
相关产品推荐
相关产品推荐

