双重循环

339 阅读2分钟

什么是双重循环

  • 一个循环体内又包含另一个完整的循环结构,比如

双重while循环

  while(循环调件1){
      循环操作1
      while(循环条件2){
      循环操作2
      }
  }

双重for循环

for(循环调件1){
      循环操作1
      for(循环条件2){
      循环操作2
      }
  }
  

多重循环的使用

注意:

- 各循环可互相嵌套
- 一般不超过三层
- 外层循环变量变化一次,内层循环变量要变化一遍

双重for循环的规律是:外层执行一次,内层执行一遍

    for(var i=0;i<3;i++){
        document.write('第一层循环'+i+'<br>');
        for(var j=0;j<3;j++){
            document.write('第二层循环'+j+'<br>');
        }
    }
    
结果显示

第一层循环0
第二层循环0
第二层循环1
第二层循环2
第一层循环1
第二层循环0
第二层循环1
第二层循环2
第一层循环2
第二层循环0
第二层循环1
第二层循环2

用for循环写一个三角形

    第一层循环控制三角形的行数
    for(var i=1;i<=3;i++){
        第二层循环控制三角形*号的个数
        for(var j=1;j<=i;j++){
            document.write('*');
        }
        document.write('<br>');
    }

结果显示
QQ截图20211214195138.png

用for循环写一个乘法口诀表

    for(let i=1;i<=9;i++){
        for(let j=1;j<=i;j++){
            if(i*j<10){
                document.write(i+"*"+j+"="+ (i*j) +"&nbsp;&nbsp;&nbsp;");
            }else{
                 document.write(i+"*"+j+"="+ (i*j) +"&nbsp;");
             }
             i*j<10?document.write(i+"*"+j+"="+ (i*j) +"&nbsp;&nbsp;&nbsp;"):document.write(i+"*"+j+"="+ (i*j) +"&nbsp;");
         }
         document.write('<br>');
     }

结果显示

111.png

也可以用三元表达式(三目表达式)进行:

     写法:
     false?console.log(1):console.log(2); 
     
     for(let i=1;i<=9;i++){
        for(let j=1;j<=i;j++){
           i*j<10?document.write(i+"*"+j+"="+ (i*j) +"&nbsp;&nbsp;&nbsp;"):document.write(j+"*"+i+"="+ (i*j) +"&nbsp;&nbsp;&nbsp;");
         }
         document.write('<br>');
    
 }

结果同上图乘法口诀表

函数:

写一个函数 执行这个函数,通过里面prompt获取输入的汽车的价格,如果大于10 0000 ,返回适合代步 ,显示在页面, 如果大于20 0000 ,返回太贵了, 显示在页面 。

    用小括号 括起来 来表示成一个表达式 
    匿名自执行函数 
    let str = (function (){
        let price = parseInt(prompt('汽车的价格'));
        if(price>200000){
            return '太贵了'
        }
        if(price>100000){
            return '适合代步'
        }
   })()
   document.write('<h1>'+str+'</h1>'); 

递归函数 自己调用自己

    Maximum call stack size exceeded 死循环 内存溢出 
    function fn(){
        console.log(1);
        fn()
    }
    fn();
 所以需要加判断条件 
 3包括3 以内的数进行累加 
function fn(n){
    if(n>=1){
        return n + fn(n-1)
        /* 3+2+1+0 */
    }
     必须return 0 否则最后一次 fn(0) 会返回undefined 
     3+2+1+undefined = NaN (not a number 不是一个数字) 
    return 0;
}
let num = fn(3);
console.log(num);