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