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
是函数名称。
的语法
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" 上。
希望你得到你的答案..谢谢
我在另一个问题中找到了这个函数,但我不太明白它是如何工作的。
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
是函数名称。
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" 上。
希望你得到你的答案..谢谢