Fibonacci 数列就不多做解释了,它是一个长这样的无限长的数列,从第三项开始,每项都是前两项的和:
0, 1, 1, 2, 3, 5, 8, 13, 21, ... ...也就避免了内存的浪费和爆栈的危险。...尾递归优化
改写为循环
之所以需要优化,是因为调用栈过多,那么只要避免了函数内部的递归调用就可以解决掉这个问题,其中一个方法是用循环代替递归。...,将递归转变为循环,避免了调用栈的无限增加。...,这也避免了增加调用栈长度,下面要做的是将原来的 Fibonacci 函数改写为每次返回另一个函数的版本:
function fibonacciFunc(n, a = 0, b = 1) { if (