JavaScript循环结构的概念

今天主要学习循环结构,给大家分享下,有什么错误指教下,多多学习下。

生活中的循环场景:

1.食堂阿姨打菜:接过顾客的的餐盘→询问菜品→打菜→打菜→递回餐盘,重复以上过程,直到所有顾客的菜都打完了。

2.看快递员送快递:查看送件地址→赶往目的地→电话告知收件人→收件人签收→交递快件,重复以上过程,直到所有需要送的快递都处理完了。

3.公交司机......

4.项目流程......

以上场景都有一个共同特点:有条件重复地做一件事。每次做的事情不同但类似。

程序是为了解决实际问题的,实际问题中存在重复动作,那么程序中也应该有相应的描述,这就是循环。

<script language="JavaScript">
/*
* 计算1+2+3..+10;
* 方案一
* */
  /*  var sum = 1+2+3+4+5+6+7+8+9+10;*/
    /*
    * 方案二*/
    var sum2 = 0;
    sum2 += 1;
    sum2 += 2;
    sum2 += 3;
    sum2 += 4;
    sum2 += 5;
    sum2 += 6;
    sum2 += 7;
    sum2 += 8;
    sum2 += 9;
    sum2 += 10;
</script>

但是这两种方案的描述方式都不太理想,如果是要加到10000呢?

注意观察方案二,他重复地做一件事(将一个数加到sum2中)每一次做的不同但类似。

我们希望做到

* 方案三
* */
var sum3 = 0;
var n = 1;
while(n <= 10){
    sum3 += n;
    n++;
};

方案三表达的含义和方案二一样,但是表达方式要好很多,比如加到10000,只需要把n<=10改为n<==10000。

while循环

While循环是表示:当...则...,也就是当某个条件成立时,则一直重复做。

流程图(稍后补)

(调试工具查看运行轨迹以及变化情况)

do{

}

while(  )

区别:

     do循环体内必然要执行一次



var Num = 100;

while (Num <= 999) {
    var Fir_Num = Math.floor(Num / 100);
    var Sec_Num = Math.floor((Num % 100) / 10);
    var Thr_Num = Num % 10;
    var sum = Math.pow(Fir_Num, 3) + Math.pow(Sec_Num, 3) + Math.pow(Thr_Num, 3);
    if(sum == Num){
        alert(Num+"水仙花数")
}
   /* alert(Num + (sum == num ? "是" : "不是") + "水仙花数");*/
    Num++;
}

 

do while 循环:

var year = 2009;
var CHGDP = 49089.82;
var USGDP = 142562.75;
 do{
      CHGDP = CHGDP * (1+0.08);
      USGDP = USGDP * (1+0.02);
     year++
 }while(CHGDP < USGDP);
 alert(year);

While循环

案例

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
        "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
    <meta http-equiv="Content-Type" content="text/html; charset=utf-8"/>
    <title></title>
</head>
<body>

</body>
<script>
    /*
    * 初始状态
    * while(循环的条件)
    * */
  var sum =0;//累加和
   var t = 1;//每一项分数
    var sign =1;//分数的符号
    var deno = t;//分母
    while(Math.abs(t) >=1e-6){
        sum +=t;
        sign = -sign;
        deno +=2;
        t = sign*1/deno;
    }
    var pi = sum*4;
    alert(pi);

</script>
</html>

总结一下循环的套路:

1.初始状态,

2.循环条件

3.循环体(需要重复做的事情)

4.为下次循环做准备

那如何去写循环的程序呢? 回答四个问题

 

水仙花数问题

GDP预测问题

初始状态

Num = 100

var year = 2009;
  var CHGDP = 49089.82;
  var USGDP = 142562.75;

循环条件

(Num <= 999)

 

CHGDP < USGDP

 

循环体

    var Fir_Num = Math.floor(Num / 100);
    var Sec_Num = Math.floor((Num % 100) / 10);
    var Thr_Num = Num % 10;
    var sum = Math.pow(Fir_Num, 3) + Math.pow(Sec_Num, 3) + Math.pow(Thr_Num, 3);
    if(sum == Num){
        alert(Num+"水仙花数")
}
}
 CHGDP = CHGDP * (1+0.08);
 USGDP = USGDP * (1+0.02);
 year++;

 

为下次做准备

Num++

year++;


1-1/3+1/5-1/7+...

变化为(+1/1)+(-1/3)+(+1/5)+(-1/7)

那么它和我们之前解决的1+2+3+4+5...+10问题就非常类似了

和的问题,只不过每次加的内容不同而已。

我们可以将每一项拆分为三部分:

T=符号*(1/分母)

1.初始状态是怎样的

     Sum = 0;

T = 1;

Sign= 1;

Deno = t

2.重复做的条件是什么

      |t|>=10的负六次方

3.重复什么

Sum+= t

4.怎么过渡到下一次循环

Sign = -sign

Deno += 2

T = sign * 1/deno

for循环

如果有 for- 这种语法来遍历数组就会方便很多。

案例:

for(var num =100;num<=999;num++){
    var num100 =  Math.floor((num%1000)/100);
    var num10 =  Math.floor((num%100)/10);
    var num1=  Math.floor(num%10);
    var sum = Math.pow(num100,3)+Math.pow(num10,3)+Math.pow(num1,3);
    if(num==sum)
    alert(num +"水仙花数");

}

  • 2
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

LDH-

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值