循环语句应用
穷举思想
穷:穷尽,举:列举
- 实际案例中,可能需要找到一些有规律的数据,但是计算机没办法自动智能筛选所要的数据,只能程序员自己书写一段代码,让计算机根据代码去进行筛选。
- 穷举思想:是一种解决问题的方法,将所有的需要数据所在的范围内所有的数据都一一列举出来,再根据规律的条件对所有这些数据进行筛选,这种方式就是穷举法。
穷举思想制作方法
- for 循环:外层使用 for 循环进行一一列举。
- if 语句:内层用 if 语句进行判断,筛选需要的数据,如果满足条件就操作数据,如果不满足条件跳过,看下一次循环的数据。
案例
- 请在控制台输出 6 的所有约数。
- a % b = 0,a 叫做 b 的倍数,b 叫做 a 的约数。
- 约数也叫作因数。
- 从可能性中一一列举,筛选。
- 一个数的约数只能是小于等于自己的数。
案例思路
- 6 的约数可能性有1-6 之间。
- 看 1,是 6 的约数,输出
- 看 2,是 6 的约数,输出
- 看 3,是 6 的约数,输出
- 看 4,不是 6 的约数,跳过
- 看 5,不是 6 的约数,跳过
- 看 6,是 6 的约数,输出
for (var i = 1; i <= 6; i++) {
if (6 % i == 0) {
console.log(i);
}
}
累加器
- 有时候需要的不是每个数据是什么,需要得到所有数据的加和,必须想办法将所有的数据的和存起来,就用到了累加器。
- 累加器本质就是变量。
- 实现累加的效果,就是利用循环,每次循环就将新的数据加到原始的变量中去,赋值过程是一个加等于赋值。
案例
- 求 1-10 之间所有数字的和。
var n = 0;(必须写在循环外,不然n会被重置)
for (var i = 1; i <= 10; i++) {
n += i;
}
console.log(n);(写在循环外,输出最终累加的值)
注意事项
- 累加器必须定义在循环外面的前面,如果定义在循环内部,每次循环都会将累加器重置,不能实现累加功能。
- 累加器的初始值必须设置,而且必须设置为 0,不会影响累加结果。
- 使用最终累加结果时,必须在 for 循环结束后的外面,如果写在循环内部,循环没结束,并不是最终需要的值。
累乘器
案例累乘
累积一些数据的乘积。与累加器非常类似。
- 求 1 到 10 的累乘的乘积,也叫作 10!,阶乘。
- 10! = 10 * 9 * 8 * 7 * 6 *5 * 4 * 3 * 2 *1
var n = 1;
for (var i = 10; i >= 1; i--) {
n *= i;
}
console.log(n);
注意
- 累乘器必须定义在循环外部前面。
- 累乘器的初始值必须是 1,1 乘以任何数都等于本身。
- 累乘器最终结果必须在 for 循环结束后使用。
综合案例
水仙花数
水仙花数是一种特殊的三位数,它的特点就是,每个数位的三次方和,等于它本身。请编程找出来。
for (var i = 100; i <= 999; i++) {
var ge = i % 10,
shi = parseInt(i / 10) %
10,
bai = parseInt(i / 100);
var sum = ge * ge * ge + shi
* shi * shi + bai * bai * bai;
if (sum == i) {
console.log(i);
}
}