广告
返回顶部
首页 > 资讯 > 精选 >JavaScript如何实现递归
  • 504
分享到

JavaScript如何实现递归

2023-06-21 23:06:01 504人浏览 泡泡鱼
摘要

这篇文章主要介绍javascript如何实现递归,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!一、什么是递归?如果一个函数在内部可以调用其本身,那么这个函数就是递归函数。简单理解:函数内部自己调用自己, 这个函数就是

这篇文章主要介绍javascript如何实现递归,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!

    一、什么是递归?

    如果一个函数在内部可以调用其本身,那么这个函数就是递归函数。简单理解:函数内部自己调用自己, 这个函数就是递归函数。

    如下所示:

    function fn(){ fn();}fn();

    这个函数就是一个递归函数,当我们直接打印时,会:

    JavaScript如何实现递归

    发现打印错误,这是为什么呢?因为递归函数的作用和循环效果一样。当没有给他返回值的时候,它就会一直死循环下去。所以,我们知道了:

    由于递归很容易发生“栈溢出”错误(stack overflow),所以必须要加退出条件 return

    那正确的递归函数应该怎样写呢?以上述代码为例:比如我们现在要打印五遍‘你好',这时,我们应该这样来写:

    var num = 1;function fn(){            console.log('你好');            if(num == 5){                return;            }            num++;            fn();        }        fn();

    打印结果为:

    JavaScript如何实现递归

    知道了递归是什么,那我们再来看看如何利用递归解决问题吧!

    二、利用递归求数学

    1、求1 * 2 * 3 * 4 …*n的阶乘

    代码如下:

     function fn(n){           if(n == 1){               return 1;           }           return n*fn(n-1);       }       console.log('1-20的阶乘为:'+fn(20));       console.log('1-10的阶乘为:'+fn(10));       console.log('1-5的阶乘为:'+fn(5));

    打印结果为:

    JavaScript如何实现递归

    2、 求斐波那契数列

    斐波那契数列,又称为“兔子数列”,指的是这样一个数列:、1、1、2、3、5、8、13、21、34、……,即第三项的值为前两项的加和。用户输入一个n,就可以得到该位置的数。

    代码如下:

    function fb(n){            if(n === 1 || n === 2){                return 1;            }            return fb(n-1) + fb(n-2);        }       console.log('第3项斐波那契数列值为:'+fb(3));       console.log('第10项斐波那契数列值为:'+fb(10));

    打印结果为:

    JavaScript如何实现递归

    三、利用递归求对应数据对象

    根据id返回对应的数据对象

    有如下所示的对象:

    var date = [{            id:1,            name:'电器',            Goods:[{                id: 11,                gname:'手机'            },{                id: 12,                gname: '电脑'            }]        },{            id:2,            name:'服饰',            goods:[{                id : 21,                gname:'裤子'            },{                id : 22,                gname : '外套'                }]        },{            id : 3,            name: '食品'                }];

    现在要通过输入id返回对应的数据对象。

    首先我们可以通过for...Each()来遍历数组,得到每一项值,如下所示:

    function getId(array,id){                    array.forEach(function(value){                        console.log(value);                    })                }                getId(date,1);

    打印的结果为:

    JavaScript如何实现递归

    这时,如果我们想要获得id为1的对象的值,可以这样操作:

    function getId(array,id){                    array.forEach(function(value){                       if(value.id === id){                           console.log(value);                       }                    })                }                getId(date,1);

    打印结果为:

    JavaScript如何实现递归

    可以得到,但是如果我们想要得到id为11的对象的值呢?很明显,直接调用该函数是不可行的,因为我们通过for...Each只是遍历得到了最外层的对象的值,而内层的具体分类并没有得到,这时,我们就可以通过递归调用getId(array,id)函数,来获取里层对象的值。

    操作如下:

     function getId(array,id){                    array.forEach(function(value){                       if(value.id === id){                           console.log(value);                       }else if(value.goods && value.goods.length !=0){                            getId(value.goods,id);                       }                    })                }                // getId(date,1);                getId(date,11);

    打印的结果为:

    JavaScript如何实现递归

    以上是“JavaScript如何实现递归”这篇文章的所有内容,感谢各位的阅读!希望分享的内容对大家有帮助,更多相关知识,欢迎关注编程网精选频道!

    --结束END--

    本文标题: JavaScript如何实现递归

    本文链接: https://www.lsjlt.com/news/301369.html(转载时请注明来源链接)

    有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

    本篇文章演示代码以及资料文档资料下载

    下载Word文档到电脑,方便收藏和打印~

    下载Word文档
    猜你喜欢
    • JavaScript如何实现递归
      这篇文章主要介绍JavaScript如何实现递归,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!一、什么是递归?如果一个函数在内部可以调用其本身,那么这个函数就是递归函数。简单理解:函数内部自己调用自己, 这个函数就是...
      99+
      2023-06-21
    • Javascript尾递归编程的实现
      目录尾递归编程思想最容易的递归运用缓存结果思想解决函数开销迭代方法尾递归实现原理图解关于Javascript没有实现尾递归优化trampoline实现尾递归编程思想 递归是编程中必不...
      99+
      2022-11-13
    • vue如何实现递归槽
      这篇文章主要介绍了vue如何实现递归槽,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。递归槽我们是否可以v-for只使用模板来制作一个组件?在此过程中,我发现了如何递归地使用s...
      99+
      2023-06-27
    • Javascript尾递归编程怎么实现
      本篇内容介绍了“Javascript尾递归编程怎么实现”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!尾递归编程思想递归是编程中必不可少的一环...
      99+
      2023-07-02
    • php递归方法如何实现
      本篇内容介绍了“php递归方法如何实现”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!php递归方法的实现方式:1、通过静态变量方式实现,代码...
      99+
      2023-07-04
    • python如何实现递归求和
      这篇文章主要介绍python如何实现递归求和,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!递归求和python的数据类型有哪些python的数据类型:1. 数字类型,包括int(整型...
      99+
      2022-10-19
    • Javascript中怎么递归实现结构树
      Javascript中怎么递归实现结构树,针对这个问题,这篇文章详细介绍了相对应的分析和解答,希望可以帮助更多想解决这个问题的小伙伴找到更简单易行的方法。1. 数组求和对于已知数组arr,求arr各项之和。...
      99+
      2022-10-19
    • 快速排序详解(递归实现与非递归实现)
      目录 一、快速排序的基本思想 二、将序列划分成左右区间的常见方法 2.1hoare版本(动图+解释+代码实现) 2.2挖坑法 2.3前后指针法 三、快速排序的初步实现 四、快速排序的优化实现 4.1快排的特殊情况 4.2对区间划分代码的...
      99+
      2023-10-24
      排序算法 算法 数据结构 c++
    • 如何提升JavaScript递归效率
      这篇文章将为大家详细讲解有关如何提升JavaScript递归效率,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。递归是拖慢脚本运行速度的大敌之一。太多的递归会让浏览器变得越...
      99+
      2022-10-19
    • JavaScript尾递归的实现及应用场景
      目录什么是尾递归和递归的差别尾递归的优化应用场景总结什么是尾递归 尾递归是一种特殊的递归,它的特点是在函数的最后一步调用自身,而不是在调用后还有其他操作。尾递归可以有效地避免栈溢出的...
      99+
      2023-05-18
      Javascript尾递归
    • js递归如何实现深拷贝
      小编给大家分享一下js递归如何实现深拷贝,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!javascript是一种什么语言javascript是一种动态类型、弱类型...
      99+
      2023-06-14
    • 如何用PHP实现递归算法
      要使用PHP实现递归算法,首先需要定义一个递归函数。递归函数是指在函数内部调用函数本身的一种方法。下面是一个使用PHP实现递归算法的...
      99+
      2023-08-24
      PHP
    • java中如何实现递归排列
      递归排列递归,俗称“我 调 我 自 己”,如果从数据结构的角度来理解,其实就是栈。假如我们要求得到A、B、C的排列,流程大概如下:(0)初始状态,栈内无数据。此时栈外:A、B、C(1)将A放入栈底。此时栈外:B、C(2)将B放入栈中。此时栈...
      99+
      2020-04-05
      java 递归 排列
    • php中是如何实现递归的
      php实现递归的方法有3种:利用引用做参数,代码为【$result[]=$a;test($a,$result)】。利用全局变量完成递归函数。利用静态变量,代码为【static $count=0;】。...
      99+
      2022-10-12
    • Python3如何实现递归求阶乘
      这篇文章将为大家详细讲解有关Python3如何实现递归求阶乘,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。程序分析递归调用即可。def factorial(n): return&nbs...
      99+
      2023-06-08
    • Java递归如何实现菜单树
      这篇文章将为大家详细讲解有关Java递归如何实现菜单树,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。pom文件<xml version="1.0" encod...
      99+
      2023-06-29
    • python中如何实现递归方法
      小编给大家分享一下python中如何实现递归方法,希望大家阅读完这篇文章之后都有所收获,下面让我们一起去探讨吧!1.递归概念递归是解决问题的一种方法,它将问题不断地分成更小的子问题,直到子问题可以用普通的方法解决。通常情况下,递归会使用一个...
      99+
      2023-06-22
    • c++显式栈如何实现递归
      本篇文章为大家展示了c++显式栈如何实现递归,内容简明扼要并且容易理解,绝对能使你眼前一亮,通过这篇文章的详细介绍希望你能有所收获。前言在大学的课上老师有教过,也就是用循环来实现递归,现在自己回顾一下并且做一下记录。1. 递归假设有函数A,...
      99+
      2023-06-26
    • c语言递归和非递归排序怎么实现
      本篇内容主要讲解“c语言递归和非递归排序怎么实现”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“c语言递归和非递归排序怎么实现”吧!递归代码流程归并就是把两个或多个序列合并,这里只介绍二路归并,就...
      99+
      2023-06-30
    • Java实现递归山脉
      本文实例为大家分享了Java实现递归山脉的具体代码,供大家参考,具体内容如下 一、递归山脉的要求 给定左右两个点X1(Lx,Ly),X2(Rx,Ry),一个y轴动态范围-range~...
      99+
      2022-11-12
    软考高级职称资格查询
    编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
    • 官方手机版

    • 微信公众号

    • 商务合作