如何像开发人员一样思考_成为一个问题解决者

程序员在处理大问题时通常会将其分解成多个小问题来解决。这个过程通常被称为“分解”或“分治”,它是一种将复杂问题分解成可管理的小问题的方法。
以下是程序员思考如何将大问题分解成小问题的一些步骤:

  1. 确定问题域:程序员需要了解和理解问题的域,并确保对问题的目标、限制和要求有一个清晰的认识。
  2. 分析问题:程序员需要分析问题并确定该问题可以分解成哪些更小的子问题。这可能涉及到阅读文档、了解业务需求等。
  3. 列出子问题:程序员需要列出所有的子问题,并确保每个子问题都具有明确定义的输入和输出。
  4. 制定计划:程序员需要制定一个基于优先级的计划,以确定哪个子问题应该首先解决,并如何实现每个子问题的解决方案。
  5. 实施解决方案:程序员需要执行计划,解决每个子问题。这可能包括编写代码、测试、调试和优化。
  6. 整合解决方案:程序员需要整合所有子问题的解决方案,以解决大问题,并确保整体解决方案能够满足问题的目标、限制和要求。
    通过这样的分解和解决过程,程序员可以有效地处理复杂问题,并写出高效且可靠的代码。

问题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]);

如何像开发人员一样思考_成为一个问题解决者_第1张图片

这样我们的最大值的功能就找出来了;
● 最小值也是同理

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]);

如何像开发人员一样思考_成为一个问题解决者_第2张图片

● 但是我们还是需要判断数组中是不是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);

如何像开发人员一样思考_成为一个问题解决者_第3张图片

● 这个功能就非常简单了,现在只要把差给返回就可以了

// 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);

你可能感兴趣的:(JavaScript,javascript)