为了账号安全,请及时绑定邮箱和手机立即绑定

函数递归的问题?????

函数递归的问题?????

xx001 2016-10-14 15:11:44
for 循环已经遍历完了,不需要用递归吧、?还有为什么标记区域会报错呢?求指点
查看完整描述

2 回答

?
stone310

TA贡献361条经验 获得超191个赞

递归是这么写的没有问题,

单单用for循环并不能深层遍历,只能遍历第一层,例如:

<body>
<div id="test">
    <ul>
        <li>
            <p>bbb</p>
        </li>
    </ul>
</div>
<script type="text/JavaScript">
    function walkTree(node) {
        if(node == null) return;
      for(var i=0;i<node.childNodes.length;i++){
          console.log(node.childNodes[i].nodeName);   //这里用了nodeName,看的更清楚
          // walkTree(node.childNodes[i]);  //不用递归,直接for
      };
    }
walkTree(document.getElementById('test')) ;
</script>
</body>

以上只用了for循环,结果只显示<div id="test">它的所有子节点,并没有显示它的子节点的子节点等;

再用递归:

<body>
<div id="test">
    <ul>
        <li>
            <p>bbb</p>
        </li>
    </ul>
</div>
<script type="text/JavaScript">
    function walkTree(node) {
        if(node == null) return;
      for(var i=0;i<node.childNodes.length;i++){
          console.log(node.childNodes[i].nodeName);  
          walkTree(node.childNodes[i]);
      };
    }
walkTree(document.getElementById('test')) ;
</script>
</body>

以上就如题主说的递归,运行显示了<div id="test">的所有子节点,子节点的子节点等,这样才算完整显示了树状结构

查看完整回答
2 反对 回复 2016-10-14
?
一瞬儿光

TA贡献178条经验 获得超70个赞

<div id="test">
    <div>
        <div>
            <div>bbb</div>
        </div>
    </div>
</div>
<script type="text/javascript">
    function walkTree(node) {
        if(node == null) return;
        console.log(node);
        console.log(node.childNodes);
        walkTree(node.childNodes);
    }
    walkTree(document.getElementById('test'));
</script>

你那个方法是错的,循环里面怎么能加递归呢?第一层循环还没结束就已经去递归了。

查看完整回答
反对 回复 2016-10-14
  • 2 回答
  • 0 关注
  • 1363 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信