您的位置:首页 > 产品设计 > UI/UE

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

2017-08-01 19:32 811 查看

循环的辅助语句

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;

       }

循环主体代码

}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐