js js中的递归

AI权益加码!Claude Code、Cursor等20+工具免费用! 购周边限时加赠Coding Plan Lite,畅享主流AI工具!学习进阶更高效! 阅读详情
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
</head>
<body>
<div id="div0">
    <ul>
        <li id="li0"></li>
        <li id="li1">
            <ul id="ul0">
                <li id="li6"></li>
                <li></li>
                <li id="li7"></li>
                <li id="li8"></li>
                <li></li>
            </ul>
        </li>
        <li id="li2"></li>
        <li id="li3">
            <div id="div4">
                <span id="span0"></span>
            </div>
        </li>
        <li id="li4">
            <a href="#" id="a0"></a>
        </li>
    </ul>
</div>
<div id="div1">
    <table>
        <tr>
            <td></td>
            <td id="td0"></td>
            <td></td>
            <td id="td1"></td>
        </tr>
        <tr>
            <td id="td2"></td>
            <td ></td>
            <td></td>
            <td id="td3"></td>
        </tr>
        <tr>
            <td></td>
            <td id="td4"></td>
            <td></td>
            <td id="td5"></td>
        </tr>
        <tr>
            <td id="td6"></td>
            <td ></td>
            <td></td>
            <td id="td7"></td>
        </tr>
    </table>
</div>
<div id="div2">
    <input id="texts" type="text">
</div>
<div id="div3">
    <div id="div7">
        <div>
            <div id="div8">
                <p>
                    <a href="#" id="a1"></a>
                </p>
            </div>
        </div>
    </div>
</div>
<script>

    //  递归函数
    /*
    * 递归函数即自调用函数,在函数体内部直接或间接地自己调用自己,即函数的嵌套调用是函数本身。
    *
    * */
    var obj={};
    function getElementId(elem) {
        if(elem.id){
            obj[elem.id]=elem
        }
        for(var i=0;i<elem.children.length;i++){
            getElementId(elem.children[i])
        }
    }
    getElementId(document.body);
    console.log(obj);
    obj.texts.value=10;// = obj[texts].value=10
    obj["div7"].textContent="100";
    var obj1={a:{c:{h:{x:2},s:1},d:{i:{y:3},z:5},k:6},b:{e:{m:{l:7},o:9},f:{n:{p:10},q:12},r:15}};
    var obj2={};
    function getObjectValue(obj1) {
      for(var pro in obj1){
          if(typeof (obj1[pro])!=="object"){
              obj2[pro]=obj1[pro]
          }else {
              getObjectValue(obj1[pro])
          }
      }
    }
    getObjectValue(obj1);
    console.log(obj2)
</script>
</body>
</html>
几种常见的JS递归算法 递归的概念 就是函数自己调用自己本身,或者在自己函数调用的下级函数中调用自己。 递归的步骤 假设递归函数已经写好 寻找递推关系 将递推关系的结构转换为递归体 将临界条件加入到递归体中 经典案例 1: 求和 求 1-100 的和 function sum(n) { if (n == 1) return 1 return sum(n - 1) + n } 经典案例 2: 斐波拉契数列 1,1,2,3,5,8,13,21,34,55,89...求第 n 项 // 递归方法 function fib(n 阅读详情

相关推荐

js 常见递归方式

js 常见递归方式

weixin_44578496的博客 6629

js实现递归的三种方法

这种通过函数名字调用自身的方式存在一个问题:函数的名字是一个指向函数对象的指针,如果我们把函数的名字与函数对象本身的指向关系断开,这种方式运行时将出现错误。这种方式很好的解决了函数名指向变更时导致递归调用时找不到自身的问题。但是这种方式也不是很完美,因为在严格模式下是禁止使用arguments.callee的。3.通过函数命名表达式来实现arguments.callee的效果。2.通过arguments.callee调用函数自身。1.通过函数自身名字递归调用。

qq_64469057的博客 3936

JS中的递归

递归函数 在js中函数自己调用自己,就称为递归递归函数的必要条件 递归方程以及递归结束条件,即给递归函数安排出口

qq_29691213的博客 1万+

面试题 03.04. 汉诺塔问题

在经典汉诺塔问题中,有 3 根柱子及 N 个不同大小的穿孔圆盘,盘子可以滑入任意一根柱子。一开始,所有盘子自上而下按升序依次套在第一根柱子上(即每一个盘子只能放在更大的盘子上面)。移动圆盘时受到以下限制: (1) 每次只能移动一个盘子; (2) 盘子只能从柱子顶端滑出移到下一根柱子; (3) 盘子只能叠在比它大的盘子上。 请编写程序,用栈将所有盘子从第一根柱子移到最后一根柱子。 你...

yeyueyouhun的博客 565

js递归遍历树形json_JavaScript中递归运用技巧详细讲解

点击右上方红色按钮关注“web秀”,让你真正秀起来递归基础知识什么是递归在JavaScript程序中,函数直接或间接调用自己。通过某个条件判断跳出结构,有了跳出才有结果。JavaScript中如何使用递归递归的步骤(技巧)1、假设递归函数已经写好 2、寻找递推关系 3、将递推关系的结构转换为递归体 4、将临界条件加入到递归体中(一定要加临界条件,某则陷入死循环,内存泄漏)简单递归示例通过简单的示...

weixin_39625987的博客 2203

js 中的递归应用+异步递归

js 中的递归应用+异步递归

m0_51244077的博客 1927

JS递归的用法JavaScript递归

递归: 函数中用调用函数自己,此时就是递归递归一定要有结束条件 function f1() { console.log("从前有座山,山里有个庙,庙里有个老和尚给小和尚讲故事:"); }; f1();//浏览器崩溃,因为没有结束条件——死循环 改进如下: var i=0; function f1() { ...

Chad97的博客 3万+

[JS] Javascript递归问题 | Javascript遍历方式

JS递归常见问题 JS函数传值 对象传值都是引用传值,原变量与函数参数变量之间有引用关系,即值改变,原变量的值也会改变 遍历数组、对象等一定要用以下方式迭代 用以下方式有意想不到的错误,array不会被完全遍历到

geodoer 3474

递归javascript_JavaScript中的递归

递归javascriptby Kevin Ennis 凯文·恩尼斯(Kevin Ennis) JavaScript中的递归 (Recursion in JavaScript) I’m just gonna get this out of the way right up front, because people get really angry otherwise: 我只是直接解决这个问题,...

cumi7754的博客 215

解锁JavaScript函数式编程潜能:JS_Fun_Practice的递归函数详解

JavaScript函数式编程是现代前端开发的核心技能之一,而递归作为函数式编程的精髓,能够帮助开发者编写更简洁、更具可读性的代码。JS_Fun_Practice项目提供了一系列有趣的函数式编程练习,特别适合新手通过实践掌握递归函数的核心原理与应用技巧。 ## 为什么选择递归?探索函数式编程的魅力 ✨ 在传统的命令式编程中,我们常常依赖`for`或`while`循环来处理重复任务。而在函数式编

gitblog_00038的博客 992

JavaScript中的递归

原文链接 1. 递归是啥? 递归概念很简单,“自己调用自己”(下面以函数为例)。 在分析递归之前,需要了解下 JavaScript 中“压栈”(call stack) 概念。 2. 压栈与出栈 栈是什么?可以理解是在内存中某一块区域,这个区域比喻成一个箱子,你往箱子里放些东西,这动作就是压栈。所以最先放下去的东西在箱子最底下,最后放下去的在箱子最上面。把东西从箱子中拿出来可以理解为出栈。 所以得...

匪君的博客 232

js中的递归算法

js递归定义: 递归函数就是在函数体内调用本函数 递归函数的使用要注意函数终止条件,避免进入死循环 简单的递归实例 1.求1,2,3,…n的和 function sum(n){ if( n == 1 ) return 1; return sum(n-1) + n; } 2.求1,3,5,7,…第n项和前n项的和 先求出第n项的值 function foo(n){ if(n == 0) return 1; return foo(n-1) + 2; } 接着求前n项的和

AK的博客 3272

js递归

js递归调用// 一个简单的阶乘函数 var f = function (x) { if (x === 1) { return 1; } else { return x * f(x - 1); } }; Javascript中函数的巨大灵活性,导致在递归时使用函数名遇到困难,对于上面的变量式声明,f是一个变量,所...

前端技术的学习整理 4万+

细说JavaScript中的递归

在尾递归优化中,当前函数调用的返回值直接被传递给下一次递归调用,而不涉及额外的操作。尾递归是一种特殊形式的递归,指的是递归函数在执行的过程中,递归调用是整个函数体中最后执行的语句。如果递归调用的层次过深,并且没有正确的终止条件,调用栈会不断增长,最终导致栈溢出。所以,尾递归是否能够成功优化取决于具体的 JavaScript 引擎,不同的引擎在对尾递归的处理上可能有差异。当函数递归调用自身或其他函数过于频繁,而递归调用的层次没有得到正确的终止条件,就可能导致栈溢出。以下是不同的环境下测试的结果。

liuv587的博客 1280

JS 递归 和JAVA递归不同

我整理的一些关于【Java】的项目学习资料(附讲解~~)和大家一起分享、学习一下:https://d.51cto.com/f2PFnNJS 递归与 JAVA 递归的区别 递归是编程中一种重要的技巧,它允许函数直接或间接地调用自身。递归在实现某些算法时非常方便,尤其是在解决问题时具有自相似特征的问题 (如树或图的遍历)。然...

weixin_30043179的博客 123

了解JavaScript递归

介绍 使用递归可以更自然地解决一些问题。 例如,像Fibonacci序列这样的序列具有递归定义。 序列中的每个数字都是序列中前两个数字的和。 要求您建立或遍历树状数据结构的问题也可以通过递归解决。 训练自己进行递归思考将为您提供解决此类问题的强大技能。 在本教程中,我将逐步介绍几个递归函数,以了解它们的工作原理,并向您展示可用于系统定义递归函数的技术。 内容: 什么是递归? ...

代码教主 328

一个靠谱的json递归,js递归,javascript递归

var arrs=[];   function getinfo(items) { for (var item of items){ if (item.children){ arrs.push({ id: item.id, parentid:...

petterkelus的博客 2103

深入解析JavaScript中的递归和堆栈

递归是一种常见的编程技巧,它意味着一个函数在其函数体内调用自身。递归函数在遇到基线条件时会停止调用自身,否则会陷入无限循环。在JavaScript中,由于其单线程运行时的特点,递归函数的内部调用会被添加到调用栈(call stack)中。调用栈以LIFO(后进先出)的顺序运行,当函数执行完毕后会从栈中弹出。​通过上面的详细解读,我们可以看到递归是一种功能强大且优雅的编程技巧。正确使用递归可以写出简洁易懂的代码,提高开发效率。但是我们也要注意控制递归的最大深度,避免造成内存溢出。

爱蹦跶的全栈大A阿 1345

js取数组相反数_一个JavaScript递归实现反转数组字符串的实例,javascript递归

一个JavaScript递归实现反转数组字符串的实例,javascript递归每天一个JavaScript实例-递归实现反转数组字符串var func = function(x,indx,str){return indx == 0 ? str : func(x,--indx,(str +=" " + x[indx]));;}var arr = new Array("apple","banna","...

weixin_39959335的博客 518
上一篇: 基于jQuery的简单动画
下一篇: 用python循环做的最简单的一个“学生管理系统”
keithzone
博客等级 码龄8年 1粉丝 31原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值