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

时间:2017-10-02 03:07:01

标签: javascript fibonacci

我在另一个问题中发现了这个功能,但我真的不明白它是如何工作的。

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

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

2 个答案:

答案 0 :(得分:0)

listView.setItems(FXCollections.observableArrayList(observableSet)); 是在javascript中编写函数的方法之一。这被称为function fibonacci(n) {}。以这种方式声明的一个优点是你可以在递归时调用相同的函数,意味着在函数体中你可以使用在这里完成的名称再次调用函数{ {1}}其中function Declaration是函数名称。

以下是ternary operator

的语法
fibonacci(n - 1) + fibonacci(n - 2);

如果条件被评估为真,那么意味着fibonacci将被评估&amp;如果将评估错误condition ? expr1 : expr2

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

expr1

上面的表达式是嵌套的三元运算符,为了简化理解,它可以分为两部分,第1部分expr2,第2部分n < 1 ? 0 : n <= 2 ? 1 : fibonacci(n - 1) + fibonacci(n - 2); 。第2部分是嵌套的三元运算。< / p>

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

答案 1 :(得分:0)

嗯,虽然我认为不是这样!据我说..让我假设你不知道斐波那契系列。所以Fibonacci系列看起来像0,1,1,2,3,5,8 ...... 当1 = 1 + 0,2 = 1 + 1,3 = 2 + 1,5 = 3 + 2;意味着每个下一个no都是前两个数字的总和。 现在让我们来谈谈代码:
Fibonacci(n-1) + Fibonacci(n-2)语句返回前两个数字的总和,如果no不大于1和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行),它在系列0,1,1,“2”上的2。 希望你能得到答案。谢谢