社区
JavaScript
帖子详情
一个程序递归的问题,请高手执教!
xiwanghope
2003-02-27 02:05:58
我在做一个树装列表的程序,写了一个称许用于在关闭根节点的时候把下面打开的字节点等等全都关掉。
我是用递归调用来做。
递归是函数1调用函数2,然后函数2在自己调用自己,可是这样当函数2查找字节点找不到的时候,直接就回到了函数1那里,没有回到函数2继续执行。
请问改如何解决啊?我做的函数2没有返回值,是个过程。
请多多帮忙~
...全文
29
15
打赏
收藏
一个程序递归的问题,请高手执教!
我在做一个树装列表的程序,写了一个称许用于在关闭根节点的时候把下面打开的字节点等等全都关掉。 我是用递归调用来做。 递归是函数1调用函数2,然后函数2在自己调用自己,可是这样当函数2查找字节点找不到的时候,直接就回到了函数1那里,没有回到函数2继续执行。 请问改如何解决啊?我做的函数2没有返回值,是个过程。 请多多帮忙~
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
15 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
xiwanghope
2003-02-27
打赏
举报
回复
我不会加分,抱歉
xiwanghope
2003-02-27
打赏
举报
回复
高兴,各位我爱死你们了~~我痛苦了一个上网了~:)
结帐~
emu_ston
2003-02-27
打赏
举报
回复
同意楼上,没有var的时候j是全局变量。
xuzuning
2003-02-27
打赏
举报
回复
函数2是closeit吧?
直观的感觉是这里不对
for(j=1;j<divTree.length;j++){
应该是
for(var j=1;j<divTree.length;j++){
否则本层次的j的值会受下一层次的j的影响
若还不行,请给出html部分以便测试
qiudehuo
2003-02-27
打赏
举报
回复
var j
xiwanghope
2003-02-27
打赏
举报
回复
不管用哦,还是不行,我快晕了
qiudehuo
2003-02-27
打赏
举报
回复
由于无法测试,这里提供想法。
function closeit(id) {
var tmpId = id; //将此变量先赋值到一个局部变量中。
var Tree
var divTree = document.all.tags("div");
var ob = eval(tmpId);
for(j=1;j<divTree.length;j++){
Tree = divTree(j);
if(Tree.parent == tmpId){
closeit(Tree.id);
Tree.style.display = "none";
ob.all.tags('img')[0].src='../images/icon-folder1-close.gif';
ob.all.tags('img')[1].src='../images/icon-folder-close.gif';
if(Tree.className != "linkmenu"){
Tree.all.tags('img')[0].src='../images/icon-folder1-close.gif';
Tree.all.tags('img')[1].src='../images/icon-folder-close.gif';
}
}
}
}
xiwanghope
2003-02-27
打赏
举报
回复
function openit(typeid) {
var divTree = document.all.tags("div");
var obj = eval(typeid);
var j = 1
for(i=1;i<divTree.length;i++){
var objTree = divTree(i);
if(objTree.parent == obj.id){
if (objTree.style.display == "none" ) {
objTree.style.display = "block";
obj.all.tags('img')[0].src='../images/icon-folder1-open.gif';
obj.all.tags('img')[1].src='../images/icon-folder-open.gif';
}else {
closeit(objTree.id)
objTree.style.display = "none";
obj.all.tags('img')[0].src='../images/icon-folder1-close.gif';
obj.all.tags('img')[1].src='../images/icon-folder-close.gif';
if(objTree.className != "linkmenu"){
objTree.all.tags('img')[0].src='../images/icon-folder1-close.gif';
objTree.all.tags('img')[1].src='../images/icon-folder-close.gif';
}
}
}
}
}
function closeit(id) {
var Tree
var divTree = document.all.tags("div");
var ob = eval(id);
for(j=1;j<divTree.length;j++){
Tree = divTree(j);
if(Tree.parent == id){
closeit(Tree.id);
Tree.style.display = "none";
ob.all.tags('img')[0].src='../images/icon-folder1-close.gif';
ob.all.tags('img')[1].src='../images/icon-folder-close.gif';
if(Tree.className != "linkmenu"){
Tree.all.tags('img')[0].src='../images/icon-folder1-close.gif';
Tree.all.tags('img')[1].src='../images/icon-folder-close.gif';
}
}
}
}
、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、
抱歉,忘了给程序了,程序就是这么写的,问题在那里?请再指教~
emu_ston
2003-02-27
打赏
举报
回复
参考一下:
http://expert.csdn.net/Expert/TopicView1.asp?id=1447234
xuzuning
2003-02-27
打赏
举报
回复
由于你没有给出函数的写法,只有猜了。你大概是这样作的
函数2:
if 子节点?
函数2
else
其他
endif
或者
函数2:
if 子节点?
函数2
endif
其他
这样只会沿一条分支走到底,然后返回
应该还有个循环来判断是否有兄弟节点,没有再返回
Go_Rush
2003-02-27
打赏
举报
回复
函数,代码贴出来呀
xiwanghope
2003-02-27
打赏
举报
回复
我还是高不定,请高手在指点指点啊,我想了一个上午了,是在不知道为什么会出现这种情况
qiudehuo
2003-02-27
打赏
举报
回复
要注意局部变量,最好在传递中重新赋值到新的局部变量中,我以前也出现这个问题。
xiwanghope
2003-02-27
打赏
举报
回复
程序没有出错哦,如果查找不到字节点,函数2就会执行到最后,然后他应该返回上一层也就是调用自己的那个函数2中,继续自行,可他没有直接跑到函数1继续执行去了。
请问是怎么会是啊?
wsj
2003-02-27
打赏
举报
回复
>当函数2查找字节点找不到的时候,直接就回到了函数1那里?
出错了吗?
那就让他不要出错
function fun2()
{
try
{
//你的程序内容
}catch(e){}
}
递归
入门、
递归
遍历、
递归
穷举算法
本课程带你从
递归
算法基础入手,课程是精讲大量实际项目中常用到的案例,课程深入浅出,包括
递归
入门,
递归
遍历、弟归穷举算法及各种项目,适合算法爱好者一起学习,后附每堂课项目源码,感兴趣可以观注博客,不定期...
送你
一个
目录,一站式学习生信!众多干货,有趣有料!
生信的作用越来越大,想学的人越来越多,不管是为了以后发展,还是为了解决眼下的
问题
。但生信学习不是一朝一夕就可以完成的事情,也许你可以很短时间学会
一个
交互式软件的操作,却不能看完
程序
教学视频...
生信宝典文章集锦,一站式学习生信!众多干货,有趣有料
生信的作用越来越大,想学的人越来越多,不管是为了以后发展,还是为了解决眼下的
问题
。但生信学习不是一朝一夕就可以完成的事情,也许你可以很短时间学会
一个
交互式软件的操作,却不能看完
程序
教学视频...
还记得这门古老的编程语言么,送你一份perl书单!
点击蓝色“
程序
员书单”关注我哟 加个“星标”,每天带你读好书! perl系列书单 Perl语言编程 内容简介 从1991年问世以来,《Perl语言编程》很快成为无可争议的Perl宝典,如今仍是这种高实用性语言的权 Wei 指南。Perl只是作为
一个
功能强大的文本处理工具,不过很快发展成为一种通用的编程语言,可以帮助成千上万的
程序
员、系统管理员,以及像你一样的技术爱好者轻松完成工作。 人们早已经翘首以待这本“大骆驼书”的更新,如今终于得偿所愿。在这一版中,三位颇有声望的Perl作者讲述了这种语
影响计算机算法世界的十位大师
伟大的智者——Don E.Knuth 中文名:高德纳(1938-) 算法和
程序
设计技术的先驱者。 Oh,God!一些国外网站这样评价他。一般说来,不知道此人的
程序
员是不可原谅的。其经典著作《计算机
程序
设计艺术》更是被誉为算法中“真正”的圣经,像KMP和LR(K)这样令人不可思议的算法,在此书比比皆是。难怪连 Bill Gates都说:“如果能做对书里所有的习题,就直接来微软上班吧!”
JavaScript
87,916
社区成员
224,617
社区内容
发帖
与我相关
我的任务
JavaScript
Web 开发 JavaScript
复制链接
扫一扫
分享
社区描述
Web 开发 JavaScript
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章