我在另一个问题中发现了这个功能,但我真的不明白它是如何工作的。
function fibonacci(n) {
return n < 1 ? 0
: n <= 2 ? 1
: fibonacci(n - 1) + fibonacci(n - 2);
}
console.log(fibonacci(4));
//fibonacci secuence
答案 0 :(得分:0)
listView.setItems(FXCollections.observableArrayList(observableSet));
是在javascript中编写函数的方法之一。这被称为function fibonacci(n) {}
。以这种方式声明的一个优点是你可以在递归时调用相同的函数,意味着在函数体中你可以使用在这里完成的名称再次调用函数{ {1}}其中function Declaration
是函数名称。
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。
希望你能得到答案。谢谢