Javascript 递归运算

<script>

        //【示例1】数学上常用的阶乘函数、幂函数和斐波那契数列。以阶乘函数为例,对于这种递归定义的函数,可以使用递归过程来求解:
        var f = function (x) {
            if (x < 2)
                return 1;								// 递归终止条件
            else
                return x * arguments.callee(x - 1); 	// 递归调用过程
        }
        alert(f(6));		// 返回6的阶乘值为720

        //【示例2】文档树就是一种递归的数据结构,下面使用递归运算来计算指定节点内所包含的全部节点数。

        function f(n) { 				// 统计指定节点及其所有子节点的个数
            var l = 0; 				// 初始化计数变量
            if (n.nodeType == 1) 		// 如果是元素节点,则计数
                l++; 	// 递加计数器
            var child = n.childNodes; 	// 获取子节点集合
            for (var i = 0; i < child.length; i++) { 	// 遍历所有子节点
                l += f(child[i]); 		// 递归运算,统计当前节点下所有子节点数
            }
            return l; 					// 返回节点数
        }
        window.onload = function () {	// 绑定页面初始化事件处理函数
            var body = document.getElementsByTagName("body")[0];
            // 获取当前文档中body节点句柄
            alert(f(body)) 			// 返回2,即body和script两个节点
        }


        function f(n, a, b, c) {
            if (n == 1) 				// 特殊处理
                document.write(a + " → " + c + "
"
); // 输出显示,直接让参数a移给c else { f(n - 1, a, c, b); // 递归调用函数,调整参数顺序,让参数a移给b document.write(a + " → " + c + "
"
); // 输出显示 f(n - 1, b, a, c); // 如果当n等于1时,调整参数顺序,让参数b移给c } } f(3, "A", "B", "C"); // 调用函数 </script>

你可能感兴趣的:(JavaScript)