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 + " &rarr; " + c + "<br />");
                // 输出显示,直接让参数a移给c
            else {
                f(n - 1, a, c, b); 	// 递归调用函数,调整参数顺序,让参数a移给b
                document.write(a + " &rarr; " + c + "<br />");
                // 输出显示
                f(n - 1, b, a, c);
                // 如果当n等于1时,调整参数顺序,让参数b移给c
            }
        }
        f(3, "A", "B", "C"); 		// 调用函数


    </script>
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值