continue结束本次循环和break跳出当前循环

来源:互联网 发布:js动态创建对象 编辑:程序博客网 时间:2024/06/05 10:04

循环的辅助语句

break和continue属性都是跳出循环的意思;
break:是跳出循环,结束运行
continue:是跳出本次循环,开始下次循环。

Break:跳出所在的switch或者循环结构

案例:判断素数

    var n =Number(prompt("请输入一个自然数:"));
    var m = Math.ceil(Math.sqrt(n));    //根据数学相关定理,判断范围可进一步缩小至[2,sqrt(n)]
    var found = false;      //找到因子的标记
    for(var i=2; i<m; i++){
        if(n%i == 0){
            found = true;
            break;      //找到以前结束
        }
    }
    alert(found?"不是素数":"是素数");

 

三个关键点:

1)break:提前结束

2)标志位:程序的出口有两个,怎么判断从那一个出口出来的呢

3)优化:

根据定义我们找因子的范围[2,n-1];

稍微分析一下,最大的因子不会超n/2,既查找范围可缩小至[2,n/2];

 根据数学相关定理,判断范围可进一步缩小至[2,sqrt(n)];


continue:结束本次循环,开启下一次的循环

案例:对100以内既不是3的倍数也不是5的倍数的数求和

常规思路:对满足条件的数进行累加

/* 100以内既不是3的倍数也不是5的倍数的数求和
* 思路一:
* (1)在[1,100]范围之内的每一个数进行逐个判断
* (2)如果满足条件则累加
* (3)输出和
* */
var sum = 0;
for(var n=1; n<=100; n++){
    if(n%3 !=0 && n%5 !=0){
        sum += n;
    }
}
alert(sum);

另一种思路:不满足条件的就放过

/* 100以内既不是3的倍数也不是5的倍数的数求和
 * 思路二:
 * (1)在[1,100]范围之内的每一个数进行逐个判断,重复2、3步骤
 * (2)如果不满足条件则放过
 * (3)累加
 * (4)输出结果
 * */
var sum = 0;
for(var n=1; n<=100; n++){
    if(n%3 ==0 || n%5 ==0){
        continue;   //结束本次循环
    }
    sum += n;
}
alert(sum);

第二种思路的好处是:思路清晰。

也就是我们在进行数据处理之前,先把各种不符合条件的情况排除;然后在处理符合条件的情况。(这个一般是程序的主体)

如果循环体的主体代码的执行有两个前提条件,常规思路这么写

for(……){

       If(条件1){

              If(条件2){

                     主体代码(可能代码较多)

              }else{

                     alert(“错误提示2”);

              }           

       }else{

       alert(“错误提示1”);

       }

}

换另外一种思路来描述,是这样的

for(……){

       if(!条件1){

              alert(“错误提示1”);

              continue;

       }

       if(!条件2){

              alert(“错误提示2”);

              continue;

       }

循环主体代码

}

原创粉丝点击