JavaScript递归

什么是递归?面试

  在函数的内部调用本身函数

下面有一个例子,经过这个例子,你们就能够了解什么是递归spa

function fun(){
    console.log(new Date())    //获取当前时间,并在控制台打印出来
    setTimeout(fun,1000)     //定时器,调用fun函数,1s调用一次
}
fun()

就这样结果在控制台每隔一秒打印一次。3d

在面试中,面试官,若是问js中递归的问题,通常都是问阶乘和斐波那契数列。code

下面,我将介绍阶乘和斐波那契数列用递归如何作blog

1. 阶乘递归

  首先,咱们得先了解阶乘的规律:n!= n * (n-1)!ci

function fun(n){
    if(n == 1 || n == 0){
        return 1;
    }
    return n * fun(n-1)
}
document.write(fun(10));

结果以下:数学

咱们只需更改调用函数中的实参,就能够知晓每个数的阶乘。it

不过,值得注意的是,阶乘是从0开始的,也就是说负数是没有阶乘的,并且0的阶乘是1,所以,在fun函数中,加了判断条件,当n为0或1是,直接返回1;下面的代码就不用执行了。

2. 斐波那契数列

  什么是斐波那契数列?

  斐波那契数列(Fibonacci sequence),又称黄金分割数列、因数学家列昂纳多·斐波那契(Fibonacci sequence)以兔子繁殖为例子而引入,故又称为“兔子数列”,指的是这样一个数列:一、一、

  二、三、五、八、1三、2一、3四、........在数学上,斐波纳契数列以以下被以递推的方法定义:F(1)=1,F(2)=1, F(n)=F(n-1)+F(n-2)(n>=3,n∈N*)

  有了数列和规律,咱们就能够写了

function fun(n){
    if(n == 1 || n == 2){
        return 1;
    }
    return fun(n-1) + fun(n-2)
}
document.write(fun(9));

结果以下:

基本上,递归就结束了。

相关文章
相关标签/搜索