利用JavaScript打印出Fibonacci数(不使用全局变量)

汤姆大叔的博客里看到了6个基础题目:本篇是第4题 - 利用JavaScript打印出Fibonacci数(不使用全局变量)html

 

解题关键:函数

一、Fibonacci数列的规律spa

二、递归code

 

解点1:Fibonacci数列的规律

1,1,2,3,5,6,13,19,32....  //从第3项开始,每项都是前两项之和

 

解点2:递归

递归是一个复杂的概念,此题能够不用递归解决,但题目要求不能使用全局变量,因此我只能想到递归方法。简单的说,递归就是函数调用函数自己,但递归必定要有一个出口,不然就无限调用下去……下面对Fibonacci数列进行一下罗列并找规律:htm

第1项,1
第2项,第1项 + 第0项
第3项,第2项 + 第1项
.....
依此类推,那么可得

Fibonacci(n) = Fibonacci(n-1) + Fibonacci(n-2)

那么它的出口处就在1这里,即求的项数小于2时,直接返回1,而再也不调用本身(一旦不调用本身了,也就意味着递归结束)

 

如下是该题的实现代码:blog

function Fibonacci(n) { //显示Fibonacci的前n项
    function Fibo(i) { //求Fibonacci的第i项
        return i<2 ? i : Fibo(i-1) + Fibo(i-2); //此处定义了递归的规则
    }
    for(var i=1; i<=n; i++) {
        console.log( Fibo(i) );
    }
}
Fibonacci(5);  //1,1,2,3,5

 

此题解答完毕!递归

相关文章
相关标签/搜索