您的位置:首页 > 其它

循环辅助语句

2017-08-01 10:38 671 查看
循环辅助语句
案例一:判断素数

三个关键点:

(1)break;提前结束

(2)标志位;因为一开始运行是没有找到的,所以标记立为false,如果找到了,标记就立为true

(3)优化:根据定义,找因子的范围定位[2,n-1],稍微分析一下,最大的因子不会超过n/2,即查找范围可缩小至[2,n/2];根据数学相关定理,判断范围可进一步缩小至[2,sqrt(n)]


var
n = Number(prompt("请输入一个自然数:"));
var m
= Math.ceil(Math.sqrt(n));//根据数学相关定理,查找范围可缩小至[2,sqrt(n)]
var flag
= false;//设置一个找到因子的标记
for(var
i =
2;i <= m/*n/2*//*n-1*/;i++){

    if(n
% i ==
0){

        flag =
true;

        break;//找到则提前结束
    }

}
alert(flag?"不是素数":"是素数");




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

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

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

/*
思路一:
* 1.在[1,100]范围内每个数进行逐个判断
* 2.如果满足条件就累加
* 3.输出和
* */
    var
sum =
0;//累加和
    for(var
i =
1;i <=
100;i++){

        if(i
% 3 !=
0 && i %
5 != 0){

            sum += i;

        }

    }

    alert(sum);




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

continue:结束本次循环,继续下一次循环

/*思路二:
* 1.在[1,100]范围内每个数重复步骤2,3
* 2.如果不满足条件就放过
* 3.累加
* 4.输出结果
* */


var
sum =
0;
for(var
i =
1;n <=
100;i++){

    if(i
% 3 ==
0 || i %
5 == 0){

        continue;//结束本次循环,继续下一次循环
    }

    sum += i;

}
alert(sum);


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

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

如果循环体的主体代码的执行有两个前提条件,常规思路是这么写的,如果循环体主体代码较多,该程序的可读性较差

for(...){

    if(条件1){

        if(条件2){

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

        }else{

            alert("错误提示2");

        }

    }else{

        alert("错误提示1");

    }

}


换成另外一个思路来描述,是这样的:

for(......){

    if(!条件1){

        alert("提示错误1");

        continue;

    }

    if(!条件2){

        alert("错误提示2");

        continue;

    }

    循环体主体代码

}


 



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