一个递归问题

问题描述

我有一棵树,数据为:这是没有加入递归一级的情况,代码如下:var zNodes = new Array();for(i=0;i<treenodes.length;i++){if(treenodes[i].parent==0){getNodeBy(treenodes[i]);zNodes.push(treenodes[i]);}}function getNodeBy(pnode){for(j=0;j<treenodes.length;j++){if(treenodes[j].parent==pnode.catid){addToNode(pnode,treenodes[j]);//getNodeBy(treenodes[j]);<--递归}}}function addToNode(pnode,node){if(pnode.childs==undefined||pnode.childs==null||pnode.childs==''){pnode.childs = new Array();pnode.childs.push(node);} else {pnode.childs.push(node);}}$(document).ready(function(){$.fn.zTree.init($("#categorytree"), setting, zNodes);});其实在asp.net洗面还有一级目录,但是加入递归后【即去掉注释处】得到如下结果只是在第一次获得叶子之后就返回了,没有得到兄弟节点,大家帮我看看是什么问题呢?我的数据是这样的:var temp = new Object();temp.catid=11;temp.parent=10;temp.name='Asp.net';temp.open=true;temp.categoryLink='http://218.70.37.129/?cat=11';treenodes.push(temp);var temp = new Object();temp.catid=10;temp.parent=0;temp.name='C#语言';temp.open=true;temp.categoryLink='http://218.70.37.129/?cat=10';treenodes.push(temp);var temp = new Object();temp.catid=9;temp.parent=0;temp.name='C/C++语言';temp.open=true;temp.categoryLink='http://218.70.37.129/?cat=9';treenodes.push(temp);var temp = new Object();temp.catid=14;temp.parent=13;temp.name='Extjs';temp.open=true;temp.categoryLink='http://218.70.37.129/?cat=14';treenodes.push(temp);var temp = new Object();temp.catid=18;temp.parent=13;temp.name='Flash编程和RIA应用';temp.open=true;temp.categoryLink='http://218.70.37.129/?cat=18';treenodes.push(temp);var temp = new Object();temp.catid=5;temp.parent=3;temp.name='Hibernate框架';temp.open=true;temp.categoryLink='http://218.70.37.129/?cat=5';treenodes.push(temp);var temp = new Object();temp.catid=7;temp.parent=3;temp.name='iBATIS框架';temp.open=true;temp.categoryLink='http://218.70.37.129/?cat=7';treenodes.push(temp);var temp = new Object();temp.catid=8;temp.parent=3;temp.name='JavaEE服务器';temp.open=true;temp.categoryLink='http://218.70.37.129/?cat=8';treenodes.push(temp);var temp = new Object();temp.catid=16;temp.parent=13;temp.name='JavaScript';temp.open=true;temp.categoryLink='http://218.70.37.129/?cat=16';treenodes.push(temp);var temp = new Object();temp.catid=3;temp.parent=0;temp.name='Java编程和Java企业应用';temp.open=true;temp.categoryLink='http://218.70.37.129/?cat=3';treenodes.push(temp);var temp = new Object();temp.catid=15;temp.parent=13;temp.name='Jquery';temp.open=true;temp.categoryLink='http://218.70.37.129/?cat=15';treenodes.push(temp);var temp = new Object();temp.catid=4;temp.parent=3;temp.name='Spring框架';temp.open=true;temp.categoryLink='http://218.70.37.129/?cat=4';treenodes.push(temp);var temp = new Object();temp.catid=6;temp.parent=3;temp.name='Struts框架';temp.open=true;temp.categoryLink='http://218.70.37.129/?cat=6';treenodes.push(temp);var temp = new Object();temp.catid=37;temp.parent=11;temp.name='test';temp.open=true;temp.categoryLink='http://218.70.37.129/?cat=37';treenodes.push(temp);var temp = new Object();temp.catid=38;temp.parent=11;temp.name='test2';temp.open=true;temp.categoryLink='http://218.70.37.129/?cat=38';treenodes.push(temp);var temp = new Object();temp.catid=17;temp.parent=13;temp.name='UI设计';temp.open=true;temp.categoryLink='http://218.70.37.129/?cat=17';treenodes.push(temp);var temp = new Object();temp.catid=13;temp.parent=0;temp.name='Web前端技术';temp.open=true;temp.categoryLink='http://218.70.37.129/?cat=13';treenodes.push(temp);var temp = new Object();temp.catid=12;temp.parent=10;temp.name='Winform';temp.open=true;temp.categoryLink='http://218.70.37.129/?cat=12';treenodes.push(temp);var temp = new Object();temp.catid=21;temp.parent=0;temp.name='其他';temp.open=true;temp.categoryLink='http://218.70.37.129/?cat=21';treenodes.push(temp);var temp = new Object();temp.catid=19;temp.parent=0;temp.name='数据库相关';temp.open=true;temp.categoryLink='http://218.70.37.129/?cat=19';treenodes.push(temp);var temp = new Object();temp.catid=1;temp.parent=0;temp.name='未分类';temp.open=true;temp.categoryLink='http://218.70.37.129/?cat=1';treenodes.push(temp);var temp = new Object();temp.catid=20;temp.parent=0;temp.name='移动编程和手机应用开发';temp.open=true;temp.categoryLink='http://218.70.37.129/?cat=20';treenodes.push(temp);var zNodes = new Array(); 问题补充:居然真是这问题……偷懒没写居然遇到这种问题……

解决方案

i和j你都不定义就使用?这样会使得它们成了全局变量,从而递归时j被影响到了。

时间: 2024-09-09 07:46:15

一个递归问题的相关文章

求一个递归修改文件夹内全部子文件和文件夹名的程序(batch或者perl)

问题描述 求一个递归修改文件夹内全部子文件和文件夹名的程序(batch或者perl) 需求是这样的: 递归修改文件夹中所有名字带"aaa"字符串的 文件夹名或者文件名改成 bbb 例如: 01_aaa |_01_aaa_01 |_nbdaaa_01.txt |_nbcaaa_02.txt |_02_aaa_01 改成 01_bbb |_01_bbb_01 |_nbdbbb_01.txt |_nbcbbb_02.txt |_02_bbb_01 解决方案 http://blog.163.c

关于String中的一个递归问题

问题描述 关于String中的一个递归问题 今天学习java String时,遇到书上讲的一个递归问题,先上代码 import java.util.*; public class InfiniteRecursion { public String toStirng() { return "InfiniteRecursion address: "+ this +"n"; } public static void main(String[] args) { List&l

使用70行Python代码实现一个递归下降解析器的教程_python

 第一步:标记化 处理表达式的第一步就是将其转化为包含一个个独立符号的列表.这一步很简单,且不是本文的重点,因此在此处我省略了很多. 首先,我定义了一些标记(数字不在此中,它们是默认的标记)和一个标记类型:   token_map = {'+':'ADD', '-':'ADD', '*':'MUL', '/':'MUL', '(':'LPAR', ')':'RPAR'} Token = namedtuple('Token', ['name', 'value']) 下面就是我用来标记 `expr`

递归

递归 递归是一种重要的编程技术.该方法用于让一个函数从其内部调用其自身.一个示例就是计算阶乘.0 的阶乘被特别地定义为 1. 更大数的阶乘是通过计算 1 * 2 * ...来求得的,每次增加 1,直至达到要计算其阶乘的那个数. 下面的段落是用文字定义的计算阶乘的一个函数. "如果这个数小于零,则拒绝接收.如果不是一个整数,则将其向下舍入为相邻的整数.如果这个数为 0,则其阶乘为 1.如果这个数大于 0,则将其与相邻较小的数的阶乘相乘." 要计算任何大于 0 的数的阶乘,至少需要计算一个

打造一个通用ASP.NET数据分页控件

asp.net|分页|控件|数据 对于几乎所有的数据表现Web应用来说,组织好数据的显示方式.避免给用户带来混乱的感觉就是最主要的目标之一.每个页面显示20条记录当然是可以接受的,但每页显示10000条记录就很容易给用户带来不便了.将数据分成多个页面显示,即对数据进行分页,是解决此类问题的最常见的办法. 一.慨述 ASP.NET本身只提供了一个支持数据分页的控件,即DataGrid分页控件,不过它比较适合Intranet环境使用,对于Internet环境来说,DataGrid分页控件提供的功能似

FSO+递归生成文件列表(xml)

fso|xml|递归 本来生成这个xml文档是为了开发一个ftp的搜索,后来由于没有资料参考怎么搜索xml文档,也就放弃了.其中最重要的是递归的算法.生成文件列表的速度很快.这个程序可以用于生成播放列表之类的东东.需要IIS的FSO组件支持.生成类似下面的XML文档 <?xml version="1.0" encoding="gb2312"?> <ftp ip="10.1.228.228"> <DIR path=&q

ASP中FSO加递归生成文件列表(xml)

本来生成这个xml文档是为了开发一个ftp的搜索,后来由于没有资料参考怎么搜索xml文档,也就放弃了.其中最重要的是递归的算法.生成文件列表的速度很快.这个程序可以用于生成播放列表之类的东东.需要IIS的FSO组件支持.生成类似下面的XML文档 <?xml version="1.0" encoding="gb2312"?> <ftp ip="10.1.228.228"> <DIR path="Game&qu

递归的应用

图一 例子代码运行结果 大家在C/C++学习时都会遇到递归,课本上以汗诺塔为例进行讲解,然后大家都希望自己找到一个递归的实例.本文以一个最简单的分形图形来讲解递归的实现过程. 先来看看绘制这个分形图形的思路.如图二所示,给定两点(p1和p2)确定一条直线,计算这条直线的长度,如果长度小于预先设定的极限值则将这两个点用直线相连,否则,取其1/3处点(点1).2/3处点(点2),以及中点上方一个点(点3),这个点与第1点.第2点构成的直线与直线p1p2的夹角为60度.判断这五个点按照顺序形成的四条直

Java递归遍历XML所有元素

做一个递归遍历XML的例子,为更为复杂的解析工作做基础. 目标:遍历所有的元素节点,并且取出来其中的值,结果打印到控制台. 源代码如下: 本程序依赖DOM4j包. import org.dom4j.Document; import org.dom4j.DocumentHelper; import org.dom4j.DocumentException; import org.dom4j.Element; import java.util.*; /** * Created by IntelliJ