for循环 while循环的应用

文章目录


前言

for循环也被成为计数循环,这种循环与while循环的语法格式不同,适用于实现已知循环次数的循环结构。
for循环适用于已知循环次数的场景,所以for循环也被称为“计数循环”。
while循环适合用于未知循环次数的场景,只能构造一个循环条件。


一、for循环 (应用)

例:输出所有的“水仙花数”。水仙花数是一个三位数,各个位的立方和等于它本身。
123=1的三次方+2的三次方+3的三次方,由于式子不成立,所以123不是“水仙花数”。
153=1的三次方+5的三次方+3的三次方,由于式子成立,所以123是“水仙花数”。

var gw,sw,bw;
for(var i=100;i<1000;i++){
	gw=i%10;
	sw=parseInt(i/10)%10;
	bw=parseInt(i/100);
	if(gw*gw*gw+sw*sw*sw+bw*bw*bw===i){
		console.log(i);
	}
}

例:寻找jQuery对象中包含的所有元素。

for(var i=0;i<$("li").length;i++){
	// console.log($("li").eq(i).get(0));
	// console.log($("li").get(i));
	console.log($("li")[i]);
	}

遍历:将一个包含多个内容的对象中所包含的内容一个个的寻找出来。

parseInt(str):将字符型数据转换为数值型数据,将实型数值转换为整型数值。
(1)parseInt(“123”) + 1; //124
(2)parseInt(“123abc”) + 1; //124
(3)parseInt(“123a1”) + 1; //124
(4)parseInt(“abc”); //NaN,表示非数字
(5)parseInt(15.36) //15,截断小数
NaN和NaN自己是不能判定相等的,必须使用isNaN()函数来判定。
有关循环的退出:
(1)for循环中表达式2不再成立,因此退出循环被称为“正常化出口”。
(2)for循环中表达式2依然成立,因为遇到了break而退出循环被称为“非正常化出口”。

$(".btn").click(function(){
		var int=$("input[name=int]").val();
		var n=parseInt(int);
		if(isNaN(n)){
			window.alert("请输入一个整数。");
		}else{
			// 判断n是否为质数
			for(var i=2;i<=Math.sqrt(n);i++){   // 必须要等循环完才能判断出是否为质数
				if(n%i==0){                // 当n%i!=0时并不能够说明任何问题,所以反向思考
					break;
				}
			}
			if(i>Math.sqrt(n)){      // 正常化出口
				console.log(n + "是质数");
			}else{                // 非正常化出口
				console.log(n + "不是质数");
			}
		}
	})

上述算法可以判断出2是不是质数,因为判断2时,for循环的表达式2(i<=Math.sqrt(n))在判断2<=Math.sqrt(2),肯定不成立,所以循环一次都没有执行,直接正常化退出。


二、“斐波那契”数列

例:寻找下列数列的规律。 1,1,2,3,5,8, 13 任意一个数的前两项和是它本身,被称为“斐波那契”数列。 前2个,即 1和1。 问题1:输出前n项,每行输出5个数。 问题2:输出第n项。 问题3:计算前n项和。 设n取值为20。 (1)在已知数列规律的前提下,至少知道前几个数字就可以按照已知的规律将数列依次排开 ==前2个,即 1和1。== (2)给出计算每一项的通项公式: ==f=f1+f2 == 第一次计算完 f=f1+f2 后,f的值就是2。 f1=f2; f2=f; f=f1+f2; (3)利用f=f1+f2计算出来的第一个数是第3项。
 var f1=1,f2=1;
   var f;
   var t=3;
   while(t<=20){
	 f=f1+f2;
 	 f1=f2;
	 f2=f;
 	 t++;
}

问题一:

var f1=1,f2=1;
var f;
var t=3;
document.write("<span>" + f1 + "</span>");
document.write("<span>" + f2 + "</span>");
while(t<=20){
	f=f1+f2;
	document.write("<span>" + f + "</span>");
	if(t%5===0) document.write("<br />");
	f1=f2;
	f2=f;
	t++;
}

问题二:

var f1=1,f2=1;
var f;
var t=3;
while(t<=20){
	f=f1+f2;	
	f1=f2;
	f2=f;
	t++;
}
console.log(“第20项:” + f);

问题三:

var f1=1,f2=1;
var f;
var t=3;
var sum=f1+f2;
while(t<=20){
	f=f1+f2;
  sum=sum+f;
	f1=f2;
	f2=f;
	t++;
}
console.log(“前20项和:” + sum);

三、爱因斯坦阶梯

有一个阶梯。若每步上2阶,最后剩下1阶;若每步上3阶,最后剩下2阶;若每步上5阶,最后剩下4阶;若每步上6阶,最后剩下5阶;若每步上7阶,最后一阶都不剩。问这个阶梯有多少阶。

设该阶梯共有ladder阶。
ladder%2===1(阶梯数是奇数)

ladder%3===2

ladder%5===4

ladder%6===5

ladder%7===0(阶梯数是7的倍数)
方法一:

  var ladder=7;
while(ladder%2!=1 || ladder%3!=2 || ladder%5!=4 || ladder%6!=5 || ladder%7!=0){
	ladder++;
}
console.log(ladder);

方法二:

var ladder=7;
while(ladder%3!=2 || ladder%5!=4 || ladder%6!=5){
	ladder+=14;
}
console.log(ladder);
上一篇:2020-12-11 Python yield 使用浅析


下一篇:[js] js中的闭包以及特点