循环

1循环结构的概念
先开看看生活中的一些场景:
(1)食堂阿姨打菜:接过顾客的餐盘→询问菜品→打菜→递回餐盘,重复以上过程,直到所有顾客的菜打完了。
(2)快递员送快递:查看送件地址→赶往目的地→电话告知收件人→收件人签收→交快递件,重复以上过程,直到所有需要送的快递处理完了。
(3)公交司机……
(4)作业流程……
以上场景都有共同的特点:有条件重复地做一件事,每一次做的事情不同但类似
程序是为了解决实际问题的,实际问题中存在着重复动作,那么程序中也应该有相应的描述,这就是循环

var sum = 0;
var num = 1;
while(num <= 10){
    sum += num;
    num++;
}
alert(num);

飙到的含义方式要好的多,比如加到10000,只需要吧num<10改成num<10000.
2while循环
While是表示“当……则……”,也就是当某个条件成立时,则一直重复做。(流程图)
(调试工具查看程序运行轨迹以及变量的变化情况)
Do…while循环
Do{重复内容,
为下次循环做准备
}while(条件)

这里写图片描述
这里写图片描述

year = 2009;
var usa = 142562.75;
var china = 49089.82;
while(china < usa){
    usa = usa +(usa * 0.02);
    china = china + (china * 0.08);
    year++;
}
alert(year);

总结一下循环的套路
(1)初始状态
(2)循环条件
(3)重复内容(循环体 要重复做的事情)
(4)为下次循环做准备
这里写图片描述
4循环辅助语句
Break:跳出所在的switch或者循环结构
案例

/*解决思路:
* 1.提示并接收判断的数n的输入
* 2.在[2,n-1]之间寻找因子
* 3.如果找到则设置找到的标志,提前结束循环
* 4.根据标志输出相应的结果
* */
var n = Number(prompt("请输入一个自然数"));
var m = Math.ceil(Math.sqrt(n));
var found = false;//找的因子的标记
for(var i=2;i<=m;i++){
    if(n%i == 0){
        found = true;
        break;
    }
}if(found == false){
    alert("这个数是素数");
}else{
    alert("这个数不是素数");
}
/*
* 三个关键点:
* 1.break;提前结束循环
* 2.标记位;
* 3.优化:
*   根据定义,找因子的范围为[2,n-1],
*   稍微分析一下,最大的因子不会超过n/2,
*   即超找范围可缩小至[2,n/2]
*   根据数学相关定理,判断范围可进一步缩小至[2,sart(n)]
* */
Continue:结束本次循环,开启下一次循环。
常规思路:
/*对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 = sum + n;
    }
}alert(sum);

另一种思路:不满足就放过:
/*对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){
    continue;//结束本次循环
 }
     sum = sum + n;
 }alert(sum);

第二种思路的好处是:结构清晰
也就是我们在进行数据处理之前,先把各种不符合条件地情况排除,然后在处理符合条件的情况(这个一般是程序的主体)
如果循环体的主体代码的执行有两个前提条件,常规思路是这么写的,循环体主体代码较多,该程序可读性较差
换另外一个思路来描述,是这样的
for(……){
If(!条件1){
alert(“错误提示1”);
continue;
}
If(!条件2){
alert(“错误提示2”);
continue;
}
}
5循环的嵌套
为什么有循环的嵌套
因为一件事情的内容在重复做。而且这个事情要反复做。
什么时候用循环的嵌套:
两者没有制约关系
两者有制约关系
一般有行数列数并且两者之间存在关系的时候用循环的嵌套
比如等腰三角形的输出

 //1.定义一个等腰三角形的行数
//    var num = 10;
    //2.每一行的空格数为总行数减去当前是第几行
    //3.每一行的星星为当前行num*2-1
    //3.循环条件行数小于等于10;
for(var i=1;i<=10;i++){
    for(var j=10-i;j>0;j--){
        document.write("_")
    }
    for(var a=1;a<=i*2-1;a++){
        document.write("*");
    }
    document.write("<br>");
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值