当前位置: 首页> 健康> 知识 > js终止递归

js终止递归

时间:2025/7/13 4:54:11来源:https://blog.csdn.net/weixin_46544600/article/details/139467407 浏览次数:0次

终止递归

1. 实现目标:js 编写递归方法 查找指定节点;

2. 需解决问题:找到所需节点后,递归不会终止,直到所有节点遍历完成后才会停止,会消耗性能

3. 解决方案:优化递归方法,在找到所需节点后,直接终止递归

4. 代码:

// 假设我们有一个简单的树节点结构
function TreeNode(value, children = []) {this.value = value;this.children = children;
}// 创建示例树
const root = new TreeNode(1, [new TreeNode(2, [new TreeNode(4), new TreeNode(5)]),new TreeNode(3, [new TreeNode(6),new TreeNode(7, [new TreeNode(8), new TreeNode(9)]),]),
]);
// 错误写法(该写法虽然能找到正确节点,但找到正确节点后还是会遍历后续节点,对于某些"洁癖患者"来说不能容忍,而且需要定义外部变量不够优雅)
let result = null;
// 递归遍历树的函数
function traverseTreeErr(findVal, node = root) {console.log("traverseTreeErr", node); // 打印这里就可以知道 找到对应节点后,会继续遍历子节点// 检查当前节点的值是否匹配if (node.value === findVal) {result = node;return;}// 遍历子节点for (let child of node.children) {traverseTreeErr(findVal, child); // 递归调用}
}
traverseTreeErr(6);
console.log("traverseTreeErr.result", result);
// 正确写法(该写法 不需要定义外部变量且找到所需节点后立即终止了递归)
// 递归遍历树的函数
function traverseTree(findVal, node = root) {console.log("traverseTree", node);// 检查当前节点的值是否匹配if (node.value === findVal) {return node;}// 遍历子节点for (let child of node.children) {let result = traverseTree(findVal, child); // 递归调用if (result) {// 如果找到了匹配的节点,返回它return result;}}// 如果没有找到匹配的节点,返回nullreturn null;
}
// 调用traverseTree来查找值为3的节点
console.log("traverseTree.result", traverseTree(6)); // 应该输出值为6的TreeNode对象

5. 效果图:

在这里插入图片描述

关键字:js终止递归

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com

责任编辑: