JavaScript求解斐波那契数列实用解斐波那契数列的第n项定义如下:F(0)=0,F(1)=1,n>1,F(n)=F(n-1)+F(n-2)。一种非常低效的解决方案遇到这种函数,我们很容易想到递归函数。解决方法如下:functionfibonacci(n){if(n<=1){returnn};else{返回斐波那契数(n-1)+斐波那契数(n-2);}}这种方法确实可以解决这个问题,但是递归的解决方法不适合这个问题,递归的方法会存在严重的效率问题。我们以f(10)为例来分析一下原因:从上图可以看出,要得到f(10),需要先得到f(8)和f(9)。同样,要获得f(9),我们还需要f(7)和f(8)。不难看出,树结构中有很多节点是重复的,重复节点的个数会随着n的增加而急剧增加,也就是说计算量会随着n的增加而急剧增加。事实上,递归所需的时间复杂度随着n呈指数增长,所以我们可以试试当n为100时需要多长时间,这是不能接受的。动态规划求解效率低下的主要原因是重复计算太多。我们只需要找到一种方法来避免重复计算。这是一个非常简单的算法:varfib=0,fib1=0,fib2=1;functionfibonacci(n){if(n<=1){返回n;}else{for(vari=1;i
