我国古代数学家张丘建在《算经》一书中提出的数学问题:鸡翁一值钱五,鸡母一值钱三,鸡雏三值钱一。百钱买百鸡,问鸡翁、鸡母、鸡雏各几何?
在数学中,我们可以用方程式解答:
设公鸡买x只,母鸡买y只,小鸡买z只(或100-x-y);
那么 x+y+z=100;
且 5 * x + 3 * y + 1/3 * z =100;
通过简单的计算可以得知:
x的取值范围为 0 < x <= 20;
y的取值范围为 0 < y <= 33;
z的取值范围为 0 < z < 100;
接下来就要用for和if语句了;
for(var x = 0;x <=20;x++){
for(var y = 0;y <= 33;y++){
for(var z = 0;z < 100;z++){
if(x + y + z == 100){
if(5*x + 3*y + 1/3*z == 100){
document.write(`公鸡${x},母鸡${y},小鸡${z}`)
}
}
}
}
document.write('<br>')
}
这是我们得到的结果:
简单讲解一下:
for语句是一种先判断,后运行的循环语句。
以第一层for为例:
var 是定义变量的关键字,如果没有它,就会定义全局变量。就好像我们的名字一样,用来区分每个人。
x是我们设的购买公鸡的数量。在JS中他是一个标识符,可以理解为一个代号,当然也可以换成别的,但是:第一个字符必须是字母、下划线或一个美元符号$;
x <=0 是给它划一个取值范围。要不然x不受拘束的话for就会无限循环下去。处理器不太好的童鞋小心电脑死机。
x++ 是在本次循环结束后,下次循环开始前赋予x一个新的值。要不然一直重复同一个值,结果也一样,怪无聊的是吧。关键是同样会死机。
三重for循环里面嵌套两个if语句,是因为要同时满足“一共买一百只鸡”和“一共一百块钱”这两个条件,所以。代码也可以这么写:
for( var a = 0;a <= 20;a++){
for( var b = 0; b <= 33;b++){
for( var c = 0;c <= 100;c++){
if((a + b + c == 100) && (5*a + 3*b + c/3 ==100)){
document.write('公鸡' + a,'母鸡' + b,'小鸡' + c)
}
}
}
document.write('<br>')
}
结果是相同的。
&& 表示 “与” ,他是一个布尔操作符,类似的还有 || “或”,! “非”。
意思就是,必须同时满足两个条件才会继续往下运行。
document.writter() 用于将运算结果打印到网页上。切记:非字符串要加上引号--"公鸡",否则不会显示。后面的x没有加,是因为有 + 号。当字符串和非字符串中间有+号时,+号将执行拼接功能,将他们都转换成字符串。
<br>
换行标签。
没有它是介个样子的:
【JS初学一周,如有误解,还请指出;如有雷同,不胜荣幸】