美文网首页JS基础练习
JS基础 -- 嵌套for循环

JS基础 -- 嵌套for循环

作者: 我常常问自己我是谁 | 来源:发表于2018-05-23 15:32 被阅读0次

    // 通过程序, 在页面中输出如下的图形:
    // 第一个图形:
    // *
    // **
    // ***
    // ****
    // *****
    //
    // 第二个图形:
    // *****
    // *****
    // *****
    // *****
    // *****

            /*
             * 向body中输出一个内容,需要使用document.write("")
             * 
             * 要实现第二个图形,其实也很简单,也是很笨拙的方法,
             * 那就是复制五个document.write(""),或者在一个document.write("*****")
             * 中复制五个‘*’,也能实现一行五个‘*’。五行‘*’上下排列的话,只需要在第五个
             * document.write("")中加上‘<br>’换行标签,或者在document.write("*****")内加上
             * ‘<br>’换行标签就行,如下列第一个写法、第二个写法:。但是,这样写有些弊端,那就是不够机动性,
             * 复制粘贴也比较麻烦,代码更没有灵活性。为了解决这几个弊端,这里会使用嵌套for循环。
             */
            //第一个写法,复制五个document.write(""),并在第五个document.write("")里面加上换行标签
            //          document.write("*");
            //          document.write("*");
            //          document.write("*");
            //          document.write("*");
            //          document.write("*<br />");
            //          document.write("*");
            //          document.write("*");
            //          document.write("*");
            //          document.write("*");
            //          document.write("*<br />");
            //          ...
            //第二个写法,复制一个document.write("*****<br />")并在第五个*后面加上换行标签
            //          document.write("*****<br />");
            //          document.write("*****<br />");
            //          document.write("*****<br />");
            /*
             *  什么是嵌套for循环?
             *  嵌套for循环是指一个for循环内再写一个for循环。
             *  接下来就是第三个写法,开始写嵌套for循环
             *  
             *  通过题看图形,来分析步骤
             *  第一个图形有点难,所以先看第二个图形。
             *  首先,第二个图形的排列是一行五个‘*’,一排也是五个‘*’组成的长方形图案。
             *  要想输出这些 ‘*’ 就需要创建很多个document.write("*")
             *  这样写太麻烦,所以在这里需要创建for循环,来帮助实现这个功能
             *  一行五个‘*’,就需要创建五次,那么一排也是同样的意思
             *  那么在实现的时候,我们需要再写一个for循环来创建一排
             *  接下来就是实现一点一点实现嵌套for循环,
             */
            //第一,先创建一个for循环体
            for(var i = 0; i < 5; i++) {
                /*
                 * 在循环的内部再创建一个for循环,用来控制图形的宽度
                 * 目前,外部的for循环执行1次,内部就会执行5次
                 * 内层循环可以来决定图形的宽度,执行几次图形的宽度是多少
                 */
                for(var j = 0; j < 5; j++) {
                    document.write("*&nbsp;&nbsp;&nbsp;");
                }
                document.write("<br />");
            }
            //设置分割线
            document.write("<br />");
            document.write("===分割线===<br />");
            document.write("<br />");
    
            /*
             * 第二个图形做好了,接下来就是第一个图形
             * 先把上面两个for循环复制下来为了区分两个图形,上面会做一个分割线
             */
            //外层是控制图形的高度
            for(var i = 0; i < 5; i++) {
                /*
                 * 在循环的内部再创建一个for循环,用来控制图形的宽度
                 * 目前,外部的for循环执行1次,内部就会执行5次
                 * 内层循环可以来决定图形的宽度,执行几次图形的宽度是多少
                 * 
                 * 在上面矩形图形的写法里,内层控制的是宽度,也就是‘*’的个数。它的个数都是 5 个。
                 * 而这个图形要求的是第一行是一个‘*’,第二行是两个‘*’,以此类推直至第五行是五个‘*’,
                 * 这样就形成了一个直角三角形。
                 * 上面矩形图形内层for循环是 j<5,这样就形成了矩形图形
                 * 那这里是直角三角形的话,应该怎么写哪?
                 * 首先,来看第一行是一个‘*’,第二行是两个‘*’,以此类推直至第五行是五个‘*’,这是一个递增的,
                 * 那来看看谁是第一个循环的,外层for循环是第一个循环的,循环一次内层for循环也会循环,从这里就
                 * 可以看出这是我们需要的,当外层for循环一次,内层for循环就要循环一次,当外层for循环二次时,内层for循环二次,
                 * 也就是内层for循环的 j < i+1 ,这样就可以实现第一个图形
                 */
                for(var j = 0; j < i + 1; j++) {
                    document.write("*&nbsp;&nbsp;&nbsp;");
                }
                document.write("<br />");
            }
            //设置分割线
            document.write("<br />");
            document.write("===分割线===<br />");
            document.write("<br />");
            //如果把三角形倒过来实现的话,那怎么实现哪?
            //第三个图形
            //          *****
            //          ****
            //          ***
            //          **
            //          *
            for(var i = 0; i < 5; i++) {
                /*
                 * 在循环的内部再创建一个for循环,用来控制图形的宽度
                 * 目前,外部的for循环执行1次,内部就会执行5次
                 * 内层循环可以来决定图形的宽度,执行几次图形的宽度是多少
                 * 
                 * 其实,很简单,那就是内层for循环  j < 5-i ,第一行是五个‘*’,第二行是四个‘*’,以此类推到第五行是一个‘*’
                 * 只需要在外层循环一次,内层for循环就从 五个‘*’开始减去,当外层for循环条件变量 i 的值是 4 时,内层for循环就需要j < 5-4
                 * 这个 4 也就是 i 的值
                 */
                for(var j = 0; j < 5-i; j++) {
                    document.write("*&nbsp;&nbsp;&nbsp;");
                }
                document.write("<br />");
            }

    相关文章

      网友评论

        本文标题:JS基础 -- 嵌套for循环

        本文链接:https://www.haomeiwen.com/subject/kebrjftx.html