与斐波纳契的卢卡斯数

时间:2018-01-21 21:40:29

标签: javascript fibonacci

我试图用斐波纳契计算一个卢卡斯数。到目前为止,我有:

const fibonacci = (n, a = 1, b = 0) => (n === 0) ? b : fibonacci(n - 1, a + b, a);
const lucas = (n) => (n - 1) + (n + 1);
lucas(fibonacci(7));

它与数字“3”一起工作所以我认为我一切都很好,但经过测试后我意识到有些事情已经关闭......我不明白。 Fibonacci有效,为什么不取最终值并制作Ln = F(n - 1) + F(n + 1)

我对Javascript相对较新

1 个答案:

答案 0 :(得分:1)

你真正错误的是实施卢卡斯系列。你当前的卢卡斯实现只需要参数并总结其邻域。

但你应该做的是,

const lucas = (f, n) => f(n-1) + f(n+1)

因为lucas函数不直接取决于n的实际值,而是给定f(n)的值(此处f为斐波那契)。

因此,您必须将该函数显式传递给外部lucas函数。

lucas(fibonacci, 7) /* fibonacci(6)+fibonacci(8) = 8 + 21 = 29 */