循环结构

While循环 

是表示“当.....则......”,也就是当某个条件成立时,则一直重复做。

(调试工具查看程序运行轨迹以及变量的变化情况):

do while 和while的区别:dowhile  是先做一次然后再循环,while是先循环然后再做。

案例:在100到999的范围内找出哪些数是水仙花数

var num = 100;
while (num <= 999) {
    var num100 = Math.floor((num % 100) / 10);
    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(sum == num ) {
        alert(num+"是水仙花数");
    }
    num++;
}

案例二:2009年,美国GDP为142562.75美元,中国为49089.82美元,假定美国的GDP增长率为2%,中国的GDP为8%,问多少年中国的GDP能够超过美国?

var  year  = 2009;
var  usa  = 142562.75;
var  china = 49089.82;
  do{
      usa = ((usa*0.02)+usa);
    china = ((china* 0.08)+china);
      year++;
} while (china < usa);
   alert(year+"年,中国("+china+")将超过美国("+usa+"");

循环的套路:

(1)   初始状态

(2)   循环条件

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

(4)   为下次循环作准备()

写程序之前回答四个问题:

(1)   初始状态是怎样的?

(2)   重复做的条件是什么?

(3)   重复做的事情是什么?

(4)   怎么过度到下一次循环?

 

 

水仙花数问题

GDP预测问题

初始状态

var num = 100;

 

var year = 2009;
var usa = 142562.75;
var china = 49089.82;

 

循环条件

num <= 999

usa>china

循环体

var num100 = Math.floor((num % 100) / 10);
    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(sum == num ) {
        alert(num+"是水仙花数")
  
   usa = ((usa*0.02)+usa);
  china=((china*0.08)+china);
  
  

 

为下次循环作准备

num++
year++

案例3:计算圆周率 π=(1-1/3+1/5-1/7+.....)*4

最后一项的绝对值小于10-6

分析:将公式稍微变化一下:(+1/1)+(-1/3)+(+1/7)

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

t=符号*1/分母

1初始状态是怎样的?

sum=0;

t=1;

sign=1

deno:1

2重复做的条件是什么?

|t|>=10-6

3重复做的事情是什么?

sum +=t

4怎么过度到下一次循环?

sign= -sign

deno +=2

t = sign*1/deno

<script>
    var sum = 0;//累加和
   
var t = 1;//每一项分数
   
var sign = 1;//运算符号
   
var deno = 1;//分母
   
while(Math.abs(t) >= 1e-6){
        sum+=t;
        sign=-sign;
        deno+=2;
        t= sign * 1/deno;
    }
    var π=sum*4;
    alert(π);
</script>


发布了40 篇原创文章 · 获赞 6 · 访问量 2万+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章