程序员在处理大问题时通常会将其分解成多个小问题来解决。这个过程通常被称为“分解”或“分治”,它是一种将复杂问题分解成可管理的小问题的方法。
以下是程序员思考如何将大问题分解成小问题的一些步骤:
- 确定问题域:程序员需要了解和理解问题的域,并确保对问题的目标、限制和要求有一个清晰的认识。
- 分析问题:程序员需要分析问题并确定该问题可以分解成哪些更小的子问题。这可能涉及到阅读文档、了解业务需求等。
- 列出子问题:程序员需要列出所有的子问题,并确保每个子问题都具有明确定义的输入和输出。
- 制定计划:程序员需要制定一个基于优先级的计划,以确定哪个子问题应该首先解决,并如何实现每个子问题的解决方案。
- 实施解决方案:程序员需要执行计划,解决每个子问题。这可能包括编写代码、测试、调试和优化。
- 整合解决方案:程序员需要整合所有子问题的解决方案,以解决大问题,并确保整体解决方案能够满足问题的目标、限制和要求。
通过这样的分解和解决过程,程序员可以有效地处理复杂问题,并写出高效且可靠的代码。
问题1
例如下面有个数据记录了温度的记录
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);