js中的斐波那契递归函数是如何工作的?

Fibonacci Recursive Function in js how it works?

我在另一个问题中找到了这个函数,但我不太明白它是如何工作的。

function fibonacci(n) {
       return n < 1 ? 0
            : n <= 2 ? 1
            : fibonacci(n - 1) + fibonacci(n - 2);
    }

    console.log(fibonacci(4));
    //fibonacci secuence

function fibonacci(n) {}是javascript中函数的一种写法。这称为function Declaration。以这种方式声明的优点之一是您可以在递归时调用相同的函数,这意味着在函数体中您可以使用此处完成的名称再次调用该函数fibonacci(n - 1) + fibonacci(n - 2); 其中 fibonacci 是函数名称。

以下是ternary operator

的语法
condition ? expr1 : expr2

这意味着如果条件被评估为真则 expr1 将被评估,如果条件为假 expr2 将被评估。

三元运算符可以嵌套(不推荐,会增加函数的复杂度)

n < 1 ? 0 : n <= 2 ? 1 : fibonacci(n - 1) + fibonacci(n - 2);

上面的表达式是嵌套三元运算符,为了便于理解可以分为两部分,part-1 n < 1 ? 0,part-2 : n <= 2 ? 1 : fibonacci(n - 1) + fibonacci(n - 2)。Part-2是嵌套三元运算.

根据第 1 部分如果 n 小于 1,将其设置为 0 否则(第二部分)如果 n 小于等于 2 将其设置为 1,否则再次使用名称调用相同的函数函数(斐波那契)

好吧,我想这还不算!根据我的说法......让我假设你不了解斐波那契数列。所以斐波那契数列看起来像 0,1,1,2,3,5,8... 如 1=1+0, 2=1+1 ,3=2+1, 5=3+2;意味着每个下一个号码都是前两个号码的总和。 现在让我们谈谈代码:
Fibonacci(n-1) + Fibonacci(n-2) 语句 return 如果 no 大于 1 和 2,则前 2 个数字的总和。例如,如果 Fibonacci(4); 被调用,则再次调用 Fibonacci(3)+Fibonacci(2); 再次调用 Fibonacci(3)=(Fibonacci(2)+Fibonacci(1)=1+0=return "1";。和 Fibonacci(2)="1";那么结果就是=1+1=2。现在看看系列上的索引 4(上面的第 2 行)它的 2 在系列 0,1,1,"2" 上。 希望你得到你的答案..谢谢