zoukankan      html  css  js  c++  java
  • JavaScript递归

    什么是递归?

      在函数的内部调用自己

    下面有一个例子,通过这个例子,大家就可以了解什么是递归

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

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

    在面试中,面试官,如果问js中递归的问题,一般都是问阶乘和斐波那契数列。

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

    1. 阶乘

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

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

    结果如下:

    我们只需更改调用函数中的实参,就可以知晓每一个数的阶乘。

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

    2. 斐波那契数列

      什么是斐波那契数列?

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

      2、3、5、8、13、21、34、........在数学上,斐波纳契数列以如下被以递推的方法定义: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));

    结果如下:

    基本上,递归就结束了。

  • 相关阅读:
    apache的httpclient进行http的交互处理
    Java 基础篇之反射
    死磕 java线程系列之创建线程的8种方式
    Spring Boot(三) 使用Lombok
    Spring Boot (七): Mybatis极简配置
    Spring Boot Thymeleaf 实现国际化
    微项目:一步一步带你使用SpringBoot入门(二)
    SSM框架手动实现分页逻辑(非PageHelper)
    Java 基础篇之集合
    一起来学Java注解(Annotation)
  • 原文地址:https://www.cnblogs.com/mercy-up/p/10139278.html
Copyright © 2011-2022 走看看