JavaScript递归运算

版权声明:本文章博主原创,希望对你有所帮助。 https://blog.csdn.net/sakenc/article/details/90764716

利用浏览器打印一个杨辉三角

案例介绍
① 设计打印输出一个行为自定义的杨辉三角形
② 找出杨辉三角形的特点

案例设计
① 数组的声明和使用
② 使用for循环来对数组进行赋值和输出
③ 根据幂数的增大,适当调整标签的宽度

实施方案
① 输入接口,用来接收用户设置幂数
② 第一列和对角线值为1,其它列的值是其正上方元素和其左上方元素之和。
③ 对数组进行赋值并打印输出

<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>

猜你喜欢

转载自blog.csdn.net/sakenc/article/details/90764716