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++;
}
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;
|
循環條件 |
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重複做的條件是什麼?
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>