位置:首页 > 软件操作教程 > 编程开发 > JavaScript > 问题详情

JavaScript 递归运算

提问人:刘团圆发布时间:2020-11-25

■知识点

递归必须由两部分组成。

    递归调用的过程。 

    递归终止的条件。

在没有限制的情况下,递归运算会无终止地自身调用。因此,在递归运算中要结合if语句进行控制,只有在某个条件成立时才允许执行递归,否则不允许调用自身。

■实例设计

递归运算的应用场景如下。

(1)求解递归问题

其主要解决一些数学运算,如阶乘函数、幂函数和斐波那契数列。 

【示例1】下面的示例使用递归运算来设计阶乘函数。

var f = function ( x ) {

    if ( x < 2 ) return 1;             //递归终止的条件

    else return x * f( x - 1 );        //递归调用的过程

}

console.log ( f ( 5 ));                //返回5的阶乘值为120

在这个过程中,利用分支结构把递归结束的条件和递归运算分开。

(2)解析递归型数据结构

    很多数据结构都具有递归特性,如DOM文档树、多级目录结构、多级导航菜单就、家族谱系结构等。对于这类数据结构,使用递归算法进行遍历比较合适。


【示例2】下面使用递归运算计算指定节点内所包含的全部节点数。

function f( n ){                       //统计指定节点及其所有子节点的元素个数

    var 1 = 0 ;                        //初始化计数变量

    if( n.nodeType == 1 ) 1 ++ ;       //如果是元素节点,则计数

    for( var i = 0; i < child.length; i ++ ){  //获取子节点

        1 += f( child[i] );            //遍历所有子节点

    }

    return 1;                          //返回节点数

}

window.onload = function(){

    console.log( f( document.body ) )  //返回2,即body和script两个节点

}

继续查找其他问题的答案?

相关视频回答
回复(0)
返回顶部