卢卡斯斐波那契数
lucas number with 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”一起工作,所以我认为我一切都很好,但在测试后我意识到有些地方不对劲..我不明白。斐波那契有效,所以为什么不取最终值并使 Ln = F(n - 1) + F(n + 1)
?
我对 Javascript
比较陌生
你真正弄错的是实现 lucas serie 本身。您当前的卢卡斯实现只是接受一个参数并对它的邻居求和。
但是你应该做的是,
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 */
我正在尝试使用斐波那契计算卢卡斯数。到目前为止我有:
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”一起工作,所以我认为我一切都很好,但在测试后我意识到有些地方不对劲..我不明白。斐波那契有效,所以为什么不取最终值并使 Ln = F(n - 1) + F(n + 1)
?
我对 Javascript
比较陌生你真正弄错的是实现 lucas serie 本身。您当前的卢卡斯实现只是接受一个参数并对它的邻居求和。
但是你应该做的是,
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 */