day3 循环

一、while循环

  

  循环是重复性做一件事
       我们没有办法控制每次循环的时间长度
       循环会增大您的程序时间复杂度  不建议无限循环嵌套  一般情况下不会嵌套超过两次
       死循环是不会停止的循环,会导致您的电脑内存溢出 从而蓝屏(避免死循环)
       循环分为很多种常见有三种  while循环   do  while循环    for循环
       写法
       var 定义初始终
       while(布尔类型表达式){
             循环体(迭代  初始值变化 操作)
        }
        var i=0//初始值定义
        while(i<10){
            i++//迭代,如果没有会导致死循环
            console.log(i);//操作
        }

       1~100的和
        var res=0
        var i=1
       放入循环体里面的代码会循环执行,放到外面只执行一次
        while(i<=100){
            res+=i//将i的值累加给res
            i++//迭代
        }
        console.log(res);



        var i=0
        while(++i<=100){//执行101次
            res+=i//执行100次
        }
        console.log(res);

       循环四要素  初始值   迭代量(不写  死循环)  循环体   条件判断表达式(循环条件)-死循环
       while(true){

        }  死循环  break
 
二、do...while循环
 
  
  while 循环  do做
        do  while  先做后循环
       和while区别  while可能一次都不做  do..while至少做一次
        var water=false
        while(water){
            console.log("喝水了");
        }
        do{
            console.log("我喝水了");
        }while(water)

       do..whlie 先做后判断  while先判断后做
       var 初始值定义
       do{
            循环体
            迭代量
        }while(布尔表达式)

       1-100的和
        var num01=100
        var sum01=0
        do{
            sum01+=num01
            num01--
        }while(num01>0)
        console.log(sum01);
 
三、for循环
 
  
   for 循环是一个比较常用的循环
       使用方式
       for(初始值 可以省略不写;判断条件;迭代量){
             循环体
        }
        for(i=0;i<10;i++){
            console.log(i)//0-9
        }
        var i=0
        for(;i<5;i++){
            console.log(i);//0-4
        }

        面试题  下面这种写法是否正确
        for(;;){
            console.log("你好");
        }  死循环  写法正确
        var i=0
        for(;i<1;){
            死循环
        }

        练习题   10的阶乘
        var res=1
        for(var i=1;i<=10;i++){
            res*=i
        }
        console.log(res)

        时间复杂度:代码执行时长     do..while 和while时间复杂度一致(代码执行时长)
        while循环比for块一倍
        while时间复杂度低于for循环

        循环嵌套  while嵌套
        do{
            外面执行3次
             do{
                    //里面执行3次
             }while()
         }while()  总共执行9次


        while(){
             外面执行5次
             while(){
                 里面执行6次
            }
         }总共执行30次


        for(var i=0;i<10;i++){
            for(var i=0;i<10;i++){
                 console.log("hello");
           }
        }  不允许的写法  两个变量不能重名

        for(var i=0;i<10;i++){
            for(var j=0;j<10;j++){
                console.log("hello");//打印100次
            }
        }

四、循环嵌套的练习
 
  
  绘制图形
            // *
            // ***
            // *****
            // 分为行和列
            for(var row=1;row<=3;row++){
                var str=''    //col<2*row+1
                for(var col=0;col<2*row-1;col++){
                    str+='*'
                }
                console.log(str);
            }

            // 绘制等腰三角形
            //4行7列
            //   *     3空格  1个*
            //  ***    2空格  3个*
            // *****   1空格  5个*
            //*******  0空格  7个*
            for(var row=0;row<4;row++){
                var str=''
                //绘制空格
                for(var col=0;col<3-row;col++){
                    str+=' '
                }
                //绘制*
                for(var col=0;col<2*row+1;col++){
                    str+='*'
                }
                console.log(str);
            }

            console.log("===================")
            // 绘制倒等腰三角形
            //*******  0空格  7*  0
            // *****   1空格  5*  1
            //  ***    2空格  3*  2
            //   *     3空格  1*  3
            for(var i=0;i<4;i++){
                var str=''
                for(var j=0;j<i;j++){
                    str+=' '
                }
                for(var j=0;j<7-2*i;j++){
                    str+='*'
                }
                console.log(str);
            }
            //col<row col--  row++ 不能写


            console.log("==================")

            //   *     3空格  1*    0
            //  ***    2空格  3*    1
            // *****   1空格  5*    2
            //*******  0空格  7*    3
            // *****   1空格  5*    4
            //  ***    2空格  3*    5
            //   *     3空格  1*    6

            //递增方式
            for(var row=0;row<7;row++){
                var str=''
                if(row<3){
                    for(var col=0;col<3-row;col++){
                    str+=' '
                    }
                    //绘制*
                    for(var col=0;col<2*row+1;col++){
                    str+='*'
                    }
                }else{
                    for(var col=0;col<row-3;col++){
                    str+=' '
                    }
                    for(var col=0;col<7-2*(row-3);col++){
                    str+='*'
                    }
                }
                console.log(str);
            }

            // 递减方式
            //   *     3空格  1*    7
            //  ***    2空格  3*    6
            // *****   1空格  5*    5
            //*******  0空格  7*    4
            // *****   1空格  5*    3
            //  ***    2空格  3*    2
            //   *     3空格  1*    1

            console.log("------递减方式-------");
            for(var i=7;i>0;i--){
                var str=''
                if(i>3){
                    for(var j=i-4;j>0;j--){
                        str+=' '
                    }
                    for(var j=15-2*i;j>0;j--){
                        str+='*'
                    }
                }else{
                    for(var j=4-i;j>0;j--){
                        str+=' '
                    }
                    for(var j=2*i-1;j>0;j--){
                        str+='*'
                    }
                }
                console.log(str);
            }



            console.log("------九九乘法表-----");
            // 绘制乘法口诀表
            // \t   制表符自动对齐  相当于tab
            //1*1=1         0
            //2*1=2 2*2=4   1
            for(i=1;i<=9;i++){
                var str=''
                for(j=1;j<=i;j++){
                    str+= j + "X" + i + "=" + i*j + "\t"
                }
                console.log(str);
            }
 
五、break
 
  
// break 在switch中跳出整个switch块  for也一样会跳出整个for块
        for(var i=0;i<5;i++){
            if(i==3){
                break//结束这个for循环
            }
            console.log(i);//0  1   2
        }

        // 双层嵌套的循环在什么位置就结束当前位置的循环
        // break 结束本个循环
        for(var i=1;i<3;i++){
            for(var j=1;j<3;j++){
                if(i==2){
                break
                }
                console.log(i*j); //1  2
            }
        }
        // 复杂循环
        for(var i=10;i>=5;i--){
            for(var j=i;j<=6;j++){
                if(i*j>33){
                    break
                }
                console.log(j);//5 6
            }
        }
        // break在外面的循环会结束掉里面包含的循环   但是里面包含的break不会结束外面的循环
        for(var i=0;i<5;i++){
            if(i==2){
                //break//01
                continue//0134
            }
            console.log(i);
        }
        // continue  接下来的接着走

        // continue语句只能用在循环里面
        // break可以用在switch里面
        // break是跳出本次循环  后面不会再运行   Continue跳过这次循环  后面接着走
        // break作用在 在循环嵌套中,只会跳出本次循环  而不影响外层循环
  
  
posted @ 2022-03-21 08:53  凌晨四点钟  阅读(39)  评论(0)    收藏  举报