for循环

一、补充循环语句 - for

  • for
    • 语法
          for(var i=0;i<=10;i++){
              console.log(i);
          }
      
    • 特点
      • 三要素,更集中,无需考虑计数器改变的位置,而影响程序结果
      • 顺序不能变(计数器的初始值; 条件; 计数器的改变)
    • 执行顺序
      • 1:初始化计数器
      • 2:条件,4:循环体,3:改变,2,4,3,.......

二、循环中的控制关键字

  • break

    • 立即结束循环,后面的任何代码都不再执行
    • 虽然跟switch中的break长得一样,但是各有各的功能
        for(var i=0;i<10;i++){
            console.log(i);
            if(i == 6){
                console.log("可以结束了");
                break;      // 立即结束循环
                console.log("12313")
            }
        }
    
        var i = 0;
        while(i<10){
            console.log(i);
            if(i === 6){
                break;
            }
            i++;
        }
    
  • continue

    • 跳过本次循环,继续下次循环的执行
        for(var i=0;i<10;i++){
            if(i==5){
                continue;
            }
            console.log(i);
        }
    
        var i=0;
        while(i<10){
            i++;
            if(i === 5){
                continue;
            }
            console.log(i);
        }
    
  • 死循环

    • 无法通过自身控制结束的循环
    • 特点:消耗大量的内存,浪费资源,程序崩溃
    • 但是,可以利用死循环的思路,解决不知道循环次数的问题
      • 记得在合适的时候,通过控制关键字停止
  • for循环和while循环的应用场景

    • while更适合处理不确定次数的需求

    • 例子:篮球,初始高度5米,往下落,弹起,每次弹起是原来的30%,问经过几次弹起,高度小于0.1

          var h = 5;
      
          var i = 0;
          while( true ){
              h = h * 0.3;
              i++;
              if(h < 0.1){
                  break;
              }
          }
      
          console.log(i);
      

三、循环的嵌套

  • 循环套循环

    • 分-总-分

    • 循环的嵌套,可以解决,多行多列的数据结构问题 外层循环控制行 内层循环控制列 i(行)和j(列)的值的分布

      0 行:0,1,2

      1 行:0,1,2

      2 行:0,1,2

    1. 例-1:页面打印出:(杨辉三角形) * ** ***

          for(var j=1;j<=3;j++){
              for(var i=0;i<j;i++){
                  document.write("*");
              }
              document.write("<br>");
          }
      
    2. 例-2:九九乘法表

          for(var j=1;j<=9;j++){
              for(var i=1;i<=j;i++){
                  document.write(i + "*" + j + "=" + i*j +"&nbsp;&nbsp;");
              }
              document.write("<br>");
          }
      
      
    3. 例-3:棋盘

        for (var i = 1; i < 5; i++) {
            for (j = 1; j <= 5; j++) {
                if (i % 2 == 0) {
                    if (j % 2 == 0) {
                        document.write("1&nbsp;");
                    } else {
                        document.write("2&nbsp;");
                    }
                } else {
                    if (j % 2 == 0) {
                        document.write("2&nbsp;");
                    } else {
                        document.write("1&nbsp;");
                    }
                }
            }
            document.write("<br>");
        }
    
    1. 例-4:多个数字阶乘的和
        var sum = 0;
        for (var i = 1; i <= 10; i++) {
            var k = 1;
            for (var j = 1; j <= i; j++) {
                k = k * j;
            }
            sum = sum + k;
        }
        document.write("阶乘和:" + sum);
    
    1. 例-5:等腰三角形(圣诞树)
        for (var i = 1; i <= 5; i++) {
            for (var j = 4; j > i - 1; j--) {
                document.write("&nbsp;");
            }
            for (var k = 1; k < i + 1; k++) {
                document.write("*");
            }
            for (var b = 1; b < i; b++) {
                document.write("*");
            }
            document.write("<br>");
        }
    
           for(var i=0;i<4;i++){
             for(var j=5;j>i;j--){
                document.writeln("&nbsp");
             }
            for(var k=0;k<2*i+1;k++){
               document.writeln("*");
            }
             document.writeln("</br>")
          } 
    
    1. 有一个棋盘,有64个方格,在第一个方格里面放1粒芝麻重量是0.00001kg,第二个里面放2粒,第三个里面放4,求出棋盘上放的所有芝麻的重量
          document.write("芝麻:<br>");
          var sum = 0;
          for(var i = 1;i <= 64;i++){
              var num = 1;
              for(var j = 0;j < i-1;j++){
                  num = num*2;
              }
              sum = sum+num;
          }
          document.write(sum*0.00001);
      
    
    
posted @ 2020-04-26 22:47  YY1028  阅读(157)  评论(0编辑  收藏  举报