javascript技巧

关注公众号 jb51net

关闭
首页 > 网络编程 > JavaScript > javascript技巧 > js中递归

一文深入详解js中的递归

作者:小明记账簿

递归函数是一种在函数体内部直接或间接调用自身的函数,在JavaScript中递归函数可以用来解决可以分解为相似子问题的问题,这篇文章主要介绍了js中递归的相关资料,需要的朋友可以参考下

1. 什么是递归

在 JavaScript 中,递归是指一个函数在其定义中直接或间接地调用自身的编程技巧。递归函数通常包含两个部分:

2. 递归的优缺点

优点

缺点

3. 如何实现递归

实现递归函数需要遵循以下步骤:

以下是一个计算阶乘的递归函数示例:

function factorial(n) {
    // 基本情况:当 n 为 0 或 1 时,阶乘为 1
    if (n === 0 || n === 1) {
        return 1;
    }
    // 递归情况:n 的阶乘等于 n 乘以 (n-1) 的阶乘
    return n * factorial(n - 1);
}

// 调用递归函数
const result = factorial(5);
console.log(result); // 输出 120

4. 什么情况下使用递归

递归适用于以下情况:

5. 更多递归示例

斐波那契数列

斐波那契数列是指这样一个数列:0、1、1、2、3、5、8、13、21、34、…… ,在数学上,斐波那契数列以如下递推的方法定义:F(0)=0F(0)=0F(0)=0F(1)=1F(1)=1F(1)=1, F(n)=F(n−1)+F(n−2)F(n)=F(n - 1)+F(n - 2)F(n)=F(n1)+F(n2)n≥2n ≥ 2n2n∈N∗n ∈ N*nN)。

function fibonacci(n) {
    // 基本情况:当 n 为 0 或 1 时,直接返回 n
    if (n === 0 || n === 1) {
        return n;
    }
    // 递归情况:第 n 个斐波那契数等于第 (n-1) 个和第 (n-2) 个斐波那契数之和
    return fibonacci(n - 1) + fibonacci(n - 2);
}

// 调用递归函数
const fibResult = fibonacci(6);
console.log(fibResult); // 输出 8

遍历 DOM 树

递归可以用于遍历 DOM 树,访问每个节点。

<!DOCTYPE html>
<html lang="en">

<body>
    <div id="parent">
        <div>Child 1</div>
        <div>Child 2</div>
    </div>
    <script>
        function traverseDOM(node) {
            // 处理当前节点
            console.log(node.nodeName);
            // 递归遍历子节点,这里的子节点必须是两个及两个以上
            for (let i = 0; i < node.childNodes.length; i++) {
                const child = node.childNodes[i];
                if (child.nodeType === 1) { // 只处理元素节点
                    traverseDOM(child);
                }
            }
        }

        // 获取根节点
        const root = document.getElementById('parent');
        // 调用递归函数
        traverseDOM(root);
    </script>
</body>

</html>

在上述示例中,traverseDOM 函数递归地遍历 DOM 树,访问每个元素节点并打印其节点名称。

总结

到此这篇关于js中递归的文章就介绍到这了,更多相关js中递归内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

您可能感兴趣的文章:
阅读全文