广告
返回顶部
首页 > 资讯 > 前端开发 > JavaScript >JavaScript递归详述
  • 897
分享到

JavaScript递归详述

2024-04-02 19:04:59 897人浏览 薄情痞子
摘要

目录一、什么是递归?二、利用递归求数学题1、求1 * 2 * 3 * 4 …*n的阶乘2、 求斐波那契数列三、利用递归求对应数据对象一、什么是递归? 如果一个函数在内部

一、什么是递归?

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

如下所示:


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

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

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

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

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


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

打印结果为:

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

二、利用递归求数学题

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));

打印结果为:

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));

打印结果为:

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

根据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);

打印的结果为:

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


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

打印结果为:

可以得到,但是如果我们想要得到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/159238.html(转载时请注明来源链接)

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

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

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

下载Word文档
猜你喜欢
  • JavaScript递归详述
    目录一、什么是递归?二、利用递归求数学题1、求1 * 2 * 3 * 4 …*n的阶乘2、 求斐波那契数列三、利用递归求对应数据对象一、什么是递归? 如果一个函数在内部...
    99+
    2022-11-12
  • Python中递归以及递归遍历目录详解
    目录递归递归求和递归处理非线性循环花钱递归递归注意事项实现Tree命令总结递归 递归的概念:函数包含了对自身的调用,那么就是递归 使用的场景:如果你发现你将要做的事情就是你现在做的...
    99+
    2022-11-12
  • 关于JavaScript递归经典案例题详析
    目录什么是递归,它是如何工作的?一、求和(1)数字求和(2)数组求和二、数据转树三、汉诺塔四、斐波那契数列总结什么是递归,它是如何工作的? 我们先来看一下递归(recursion)...
    99+
    2022-11-12
  • JavaScript怎么使用递归
    这篇文章将为大家详细讲解有关JavaScript怎么使用递归,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。html有什么特点1、简易性:超级文本标记语言版本升级采用超集方式,从而更加灵活方便,适合初学前端...
    99+
    2023-06-14
  • JavaScript如何实现递归
    这篇文章主要介绍JavaScript如何实现递归,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!一、什么是递归?如果一个函数在内部可以调用其本身,那么这个函数就是递归函数。简单理解:函数内部自己调用自己, 这个函数就是...
    99+
    2023-06-21
  • javascript递归怎么使用
    本篇内容主要讲解“javascript递归怎么使用”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“javascript递归怎么使用”吧!一、什么是递归?递归是指在一个过程中调用自身的行为。简单来说...
    99+
    2023-07-06
  • Java递归算法详解
    递归算法是一种通过调用自身来解决问题的方法。在Java中,递归算法通常有以下几个要素:1. 基本情况:递归方法必须有一个基本情况,即...
    99+
    2023-09-14
    Java
  • C# 递归算法详解
    目录1)1、1、2、3、5、8.......用递归算法求第30位数的值?2)编写计算斐波那契(Fibonacci)数列的第n项函数fib(n)斐波那契数列为:0、1、1、2、3、……...
    99+
    2022-11-12
  • python递归函数详解
    递归函数是指在函数定义中使用函数自身的一种编程技巧。递归函数通常包括两个部分:基本情况和递归情况,基本情况是指函数的结束条件,递归情况是指函数调用自身的情况。递归函数的特点:1、更容易理解和编写,尤其是对于一些问题,如树的遍历、阶乘计算、斐...
    99+
    2023-12-18
    python 递归函数
  • 快速排序详解(递归实现与非递归实现)
    目录 一、快速排序的基本思想 二、将序列划分成左右区间的常见方法 2.1hoare版本(动图+解释+代码实现) 2.2挖坑法 2.3前后指针法 三、快速排序的初步实现 四、快速排序的优化实现 4.1快排的特殊情况 4.2对区间划分代码的...
    99+
    2023-10-24
    排序算法 算法 数据结构 c++
  • JavaScript中关于递归与回溯的实例详解
    目录何为递归构成递归条件关于回溯实际业务组合问题何为递归 递归作为一种算法在程序设计语言中广泛应用。 一个过程或函数在其定义或说明中有直接或间接调用自身的一种方法,它通常把一个大型复...
    99+
    2022-11-13
  • javascript不支持尾递归吗
    尾递归是一种算法优化技术,可以将递归算法转化为效率更高的迭代算法。尾递归相对于常规递归而言,可以极大地减小栈的深度,从而避免栈溢出等问题。然而,JavaScript 并不支持尾递归,这对于很多工程实践而言是一个问题。为什么 JavaScri...
    99+
    2023-05-14
  • Java的递归算法详解
    目录一、介绍1、介绍2、案例二、迷宫问题三、八皇后问题四、汉诺塔问题1、问题2、思想3、代码总结一、介绍 1、介绍 递归:递归就是方法自己调用自己,每次调用时传入不同的变量。递归有助...
    99+
    2022-11-12
  • Python函数的递归详解
    目录1.1、递归函数的特点 1.2 递归案例 ----- 计算数字累加 总结 函数调用自身的 编程技巧 称为递归。 1.1、递归函数的特点 特点: 一个函数 内部 调用自己。 ...
    99+
    2022-11-12
  • C语言递归实现归并排序详解
    归并排序递归实现还是比较难理解的,感觉涉及递归一般理解起来都会比较有难度吧,但是看了b站视频,然后照着打下来,然后自己写了点注释,就发现不知不觉都大概懂了。 这里的归并讲的是升序排序...
    99+
    2022-11-13
  • 如何提升JavaScript递归效率
    这篇文章将为大家详细讲解有关如何提升JavaScript递归效率,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。递归是拖慢脚本运行速度的大敌之一。太多的递归会让浏览器变得越...
    99+
    2022-10-19
  • Javascript尾递归编程的实现
    目录尾递归编程思想最容易的递归运用缓存结果思想解决函数开销迭代方法尾递归实现原理图解关于Javascript没有实现尾递归优化trampoline实现尾递归编程思想 递归是编程中必不...
    99+
    2022-11-13
  • javascript递归函数怎么使用
    这期内容当中小编将会给大家带来有关javascript递归函数怎么使用,文章内容丰富且以专业的角度为大家分析和叙述,阅读完这篇文章希望大家可以有所收获。1、说明所有递归函数都有一个通用模式 。它们总是由一个调用自身的递归部分和一个不调用自身...
    99+
    2023-06-15
  • 尾递归详细总结分析
    一. 尾递归与Continuation递归与尾递归关于递归操作,相信大家都已经不陌生。简单地说,一个函数直接或间接地调用自身,是为直接或间接递归。例如,我们可以使用递归来计算一个单向...
    99+
    2022-11-15
    尾递归
  • Python实例详解递归算法
    递归是一种较为抽象的数学逻辑,可以简单的理解为「程序调用自身的算法」。 维基百科对递归的解释是: 递归(英语:Recursion),又译为递回,在数学与计算机科学中,是指在函数的定义...
    99+
    2022-11-13
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作