程序员在处理大问题时通常会将其分解成多个小问题来解决。这个过程通常被称为“分解”或“分治”,它是一种将复杂问题分解成可管理的小问题的方法。
以下是程序员思考如何将大问题分解成小问题的一些步骤:
例如下面有个数据记录了温度的记录
const temperatures = [3, -2, -6, -1, 'error', 9, 13, 17, 15, 14, 9, 5];
我们工作的一家公司建立一个智能家居温度计。我们最近的任务是这样的:“给定一天的温度序列,计算温度振幅。请记住,有时可能会出现传感器错误。
1/-什么是温度振幅? 答: 差异
最高和最低温度之间
1/如何计算最大和最小温度
1/-什么是传感器错误? 做什么
1/2) 分解成子问题如何忽略错误?查找临时数组中的最大值i/-在临时数组中查找最小值1/-从最大值减去最小值 (振幅) 并返回它
● 那我们之前学过,我们可以使用函数去实现某一个功能,找最大值和最小值是不是我们需要的功能,我们是不是要达到,不管你传入什么数组,我都能找到它的最大值。
● 所以我们首先选择使用函数去实现找最大值和最小值的功能。
● 那我们该如何实现呢?可以这样,起始,我们就把数组的【0】当作最大值,然后我们for循环一个一个比较,来把最大值存入变量中,之前学过!对吧?我们来实现
const calcTempAmplitude = function (temps) {
let max = temps[0];
for (let i = 0; i < temps.length; i++) {
if (temps[i] > max) max = temps[i];
}
console.log(max);
};
calcTempAmplitude([2, 55, 8, 6, 10]);
这样我们的最大值的功能就找出来了;
● 最小值也是同理
const calcTempAmplitude = function (temps) {
let max = temps[0];
let min = temps[0];
for (let i = 0; i < temps.length; i++) {
const curTemp = temps[i];
if (curTemp > max) {
max = curTemp;
} else if (curTemp < min) {
min = curTemp;
}
}
console.log(max, min);
};
calcTempAmplitude([5, 4, 1, 22, 66, 12]);
● 但是我们还是需要判断数组中是不是number类型,我们可以使用continue的方式
const temperatures = [3, -2, -6, -1, 'error', 9, 13, 17, 15, 14, 9, 5];
const calcTempAmplitude = function (temps) {
let max = temps[0];
let min = temps[0];
for (let i = 0; i < temps.length; i++) {
const curTemp = temps[i];
if(typeof curTemp !== 'number') continue;
if (curTemp > max) {
max = curTemp;
} else if (curTemp < min) {
min = curTemp;
}
}
console.log(max, min);
};
calcTempAmplitude(temperatures);
● 这个功能就非常简单了,现在只要把差给返回就可以了
// Remember, we're gonna use strict mode in all scripts now!
'use strict';
const temperatures = [3, -2, -6, -1, 'error', 9, 13, 17, 15, 14, 9, 5];
const calcTempAmplitude = function (temps) {
let max = temps[0];
let min = temps[0];
for (let i = 0; i < temps.length; i++) {
const curTemp = temps[i];
if (typeof curTemp !== 'number') continue;
if (curTemp > max) {
max = curTemp;
} else if (curTemp < min) {
min = curTemp;
}
}
console.log(max, min);
return max - min;
};
const ampltitude = calcTempAmplitude(temperatures);
console.log(ampltitude);