`
wyzxzws
  • 浏览: 394465 次
  • 性别: Icon_minigender_1
  • 来自: dazhou
社区版块
存档分类
最新评论

我的递归呀

阅读更多
/**
 * 找到所有子小题
 */
function searchSubNode(src_arr, p_node) {
	var ret_arr = [p_node.getContent()]
	var sub_arr = [];
	for (var i = 0; i < src_arr.length; i++) {
		var node_i = src_arr[i];
		if ("" === node_i) {
			continue;
		}
		var has_p = node_i.hasP();
		if (has_p === p_node.getVSubName()) {
			// 如果has_p属性和父亲节点的vsubname节点值相等
			src_arr.splice(i, 1, "");// 删除第i个元素
			var has_sub = node_i.hasSub();
			if ("no" === has_sub) {
				var content = node_i.getContent();
				sub_arr.push(content);
			} else {
				sub_arr = searchSubNode(src_arr, node_i);
			}
		}
	}
	ret_arr.push(sub_arr);
	return ret_arr;
}

 以上是递归求出所有的子小题

以下是示例结果集:

[
	"<vsubcontent value=\"no\"><vsubname>a</vsubname><vsubvalue>1</vsubvalue></vsubcontent>",
	"<vsubcontent value=\"no\"><vsubname>b</vsubname><vsubvalue>2</vsubvalue></vsubcontent>", 
	[
		"<vsubcontent value=\"yes\"><vsubname>hh</vsubname><vsubvalue>3</vsubvalue></vsubcontent>", 
		[
			"<vsubcontent value=\"yes\"><vsubname value=\"hh\">aa</vsubname><vsubvalue>3.1</vsubvalue></vsubcontent>",
			[
				"<vsubcontent value=\"no\"><vsubname value=\"aa\">aaa</vsubname><vsubvalue>3.1.1</vsubvalue></vsubcontent>", 
				"<vsubcontent value=\"no\"><vsubname value=\"aa\">bbb</vsubname><vsubvalue>3.1.2</vsubvalue></vsubcontent>"
			], 
			"<vsubcontent value=\"no\"><vsubname value=\"hh\">bb</vsubname><vsubvalue>3.2</vsubvalue></vsubcontent>"
		],
	]
]

 哎,我得学学算法了!

分享到:
评论

相关推荐

    C#递归 C#递归 C#递归

    根据给定的信息,本文将详细解释C#中的递归概念,并通过具体的代码示例来解析递归函数在构建树形结构中的应用。 ### C#递归基础 #### 什么是递归? 递归是一种编程技术,它允许一个方法或函数直接或间接地调用自身...

    .net 递归算法 .net 递归算法.net 递归算法

    在.NET编程环境中,递归算法是一种强大的工具,它允许函数或方法调用自身来解决复杂问题。递归的核心思想是将大问题分解为相同或相似的小问题,直到问题变得足够简单,可以直接得出答案。这种解决问题的方式在数据...

    ackermann函数的递归实现和非递归实现

    阿克曼函数是一种非常特殊的数学函数,常用于理论计算和计算机科学中,特别是在讨论递归算法和计算复杂性时。这个函数是由荷兰数学家格奥尔格·阿克曼在20世纪早期提出的,它展示了超越函数的概念,即无法用初等函数...

    递归算法与非递归转化

    递归算法与非递归转化 递归算法是把问题转化为规模缩小了的同类问题的子问题,然后递归调用函数(或过程)来表示问题的解。递归的效率一般不高,但是递归比较符合人类的思维方式。一般而言非递归算法更有效;但很多...

    可并行递归算法的递归多线程实现

    ### 可并行递归算法的递归多线程实现:深入解析 #### 引言:多线程与并行处理的重要性 随着计算任务日益复杂,传统的单线程编程模型已无法满足高效处理大规模数据的需求。多线程编程作为一种提高程序并发性和性能...

    abap简单递归算法

    ### ABAP简单递归算法解析 #### 一、引言 ABAP(Advanced Business Application Programming)是一种用于SAP系统的编程语言。它不仅支持传统的过程化编程,还支持面向对象编程和Web开发。本文将深入探讨一个ABAP中...

    acm递归算法总结竞赛

    在ACM(国际大学生程序设计竞赛)中,递归算法是一种常见的解决问题的方法,它通过函数自身调用自身来实现问题的解决。递归的核心在于找到基本情况(base case),即可以直接求解的问题,以及每次递归调用时问题规模...

    快速选择非递归与递归算法实现

    空间复杂度方面,非递归实现主要取决于分区操作和栈的使用,而递归实现则依赖于递归深度,一般情况下都是O(log n)。 在实际编程中,可以根据具体需求选择非递归或递归实现。非递归版本更适合内存有限或者递归深度...

    数据结构二叉树遍历递归,非递归

    在本主题中,我们将深入探讨二叉树的三种主要遍历方法:中序遍历、前序遍历和后序遍历,以及如何通过递归和非递归的方式实现这些遍历。 首先,让我们理解递归遍历的概念。递归是一种解决问题的方法,它将问题分解为...

    5.6 递归思想和递归函数1

    在编程领域,递归是一种强大的思想,它基于解决问题的子问题与原问题具有相同结构的特点。递归函数是实现递归思想的一种方式,通常在函数内部调用自身来解决复杂问题。本节将深入探讨递归思想和递归函数的概念,并...

    CRP.zip_CRP_CRP递归图_matlab 递归图_递归 MATLAB_递归分析

    在IT领域,递归是一种强大的编程技术,常用于解决复杂问题。递归图和递归分析是理解递归过程和优化算法效率的重要工具。本文将深入探讨这些概念,并结合MATLAB环境,阐述如何利用它们进行复杂的系统分析。 首先,...

    阿克曼函数 c程序 递归与非递归算法的综合

    阿克曼函数是一种非常特殊的数学函数,它在计算理论和计算机科学中被广泛用来探讨递归的概念。这个函数因其复杂的性质而闻名,特别是在其参数达到一定值时,增长速度极其迅速,以至于很快超出任何可计算的范围。在这...

    递归算法到非递归算法的转换.ppt

    递归算法是编程中一种强大的工具,它通过调用自身来解决问题或简化复杂的问题。然而,在某些场景下,非递归算法可能更有利于性能优化或理解。本章将探讨如何将递归算法转换为非递归算法。 首先,我们要了解递归的...

    二叉树递归与非递归遍历

    递归遍历的优点在于其代码简洁明了,但缺点是当处理大规模的二叉树时,递归可能会导致栈溢出,因为每次递归调用都会增加栈的深度。 **非递归遍历** 1. **前序遍历**: - 使用一个栈来保存待访问的节点。 - 将根...

    消除文法左递归

    在编译原理中,消除文法的左递归是一个重要的概念,主要应用于解析器的构造。这个过程是为了使解析过程更加高效,避免无限循环的发生。本文将深入探讨左递归的定义、为何需要消除以及如何消除,同时结合课程设计与...

    读懂C++递归程序

    C++递归程序的概念及其执行过程 递归是计算机科学中的一个核心概念,它是一种解决复杂问题的方法,通过将大问题分解为规模更小、更容易解决的小问题来实现。在程序设计中,递归允许程序调用自身来处理这些分解后的...

    递归图 时间序列重构小波变换_递归图matlab_reconstitution_recurrenceplots_小波变换_递归图

    在时间序列分析领域,递归图(Recurrence Plots,简称RP)是一种强大的可视化工具,用于揭示时间序列的内在结构和动态行为。递归图通过将时间序列转换为二维图形,帮助研究人员直观地理解系统的复杂性和周期性。本文...

    熵的递归图分析_熵_熵递归_递归图分析_一维信号特征_递归图_

    本主题聚焦于熵的递归图分析,这是一种利用递归图来提取一维信号特征的方法,广泛应用于信号的分类、识别和特征提取。 首先,我们要理解“熵”的基本概念。熵在信息论中定义为一个随机变量的不确定性,通常用数学...

    5!递归算法和非递归算法

    递归算法和非递归算法 在计算机科学与编程领域中,递归算法与非递归算法是两种非常重要的计算方法。本文将详细介绍这两种算法的特点、应用场景以及如何实现它们,特别针对初学者及面试准备者。 #### 递归算法 ...

Global site tag (gtag.js) - Google Analytics