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

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)呢?

我对Java比较陌生

最佳答案

您真正误解的是实现lucas serie本身。您当前的lucas实现只是一个参数,并将其总和求和。

但是你应该做的是

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 */

关于javascript - 斐波那契数,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/48372000/

10-11 06:02