freeCodeCamp/guide/russian/certifications/javascript-algorithms-and-d.../intermediate-algorithm-scri.../sum-all-numbers-in-a-range/index.md

9.3 KiB
Raw Blame History

title localeTitle
Sum All Numbers in a Range Сумма всех чисел в диапазоне

:triangular_flag_on_post: Не забудьте использовать Read-Search-Ask если вы застряли. Попробуйте подключить программу :busts_in_silhouette: и напишите свой собственный код :pencil:

:checkered_flag: Проблема Объяснение:

Вам нужно создать программу, которая будет принимать массив из двух чисел, которые не обязательно в порядке, а затем добавить не только эти числа, но и любые числа между ними. Например, [3,1] будет таким же, как 1+2+3 а не только 3+1

:speech_balloon: Подсказка: 1

Используйте Math.max() чтобы найти максимальное значение двух чисел.

попытаться решить проблему сейчас

:speech_balloon: Подсказка: 2

Используйте Math.min() чтобы найти минимальное значение двух чисел.

попытаться решить проблему сейчас

:speech_balloon: Подсказка: 3

Помните, что вы должны добавить все числа между ними, чтобы это потребовало способа получить эти числа.

попытаться решить проблему сейчас

Осторожно, спойлеры!

предупреждающий знак

Решение впереди!

:beginner: Решение базового кода:

function sumAll(arr) { 
    var max = Math.max(arr[0], arr[1]); 
    var min = Math.min(arr[0], arr[1]); 
    var temp = 0; 
    for (var i=min; i <= max; i++){ 
        temp += i; 
    } 
  return(temp); 
 } 
 
 sumAll([1, 4]); 

:rocket: Код запуска

Код Объяснение:

  • Сначала создайте переменную, чтобы сохранить максимальное число между двумя.
  • То же, что и раньше для наименьшего числа.
  • Мы создаем временную переменную для добавления чисел.

Поскольку числа могут быть не всегда в порядке, использование max() и min() поможет организовать.

Связанные ссылки

:sunflower: Решение промежуточного кода:

function sumAll(arr) { 
  // Buckle up everything to one! 
 
  // Using ES6 arrow function (one-liner) 
  var sortedArr = arr.sort((a,b) => ab); 
  var firstNum = arr[0]; 
  var lastNum = arr[1]; 
  // Using Arithmetic Progression summing formula 
 
  var sum = (lastNum - firstNum + 1) * (firstNum + lastNum) / 2; 
  return sum; 
 } 

:rocket: Код запуска

Код Объяснение:

  • Во-первых, мы создаем переменную с именем sortedArr которая сортирует ее от самого низкого до самого высокого значения.
  • firstNum равен первому числу, а lastNum равен второму числу.
  • Затем, используя формулу суммирования арифметической прогрессии, мы даем sum равную (lastNum - firstNum + 1) * (firstNum + lastNum) / 2 .
  • Наконец, мы возвращаем sum .

Строка var sortedArr = arr.sort((a,b) => ab); вероятно, вы будете более смущены. Это будет то же самое, что создать функцию, которая возвращает ab для sort() который является стандартным способом сортировки чисел от наименьшего до самого большого. Вместо использования стрелки или функции стрелки жира мы можем делать все это в одной отдельной строке, что позволяет нам писать меньше.

Связанные ссылки

:rotating_light: Расширенное решение для кода:

function sumAll(arr) { 
    var sum = 0; 
    for (var i = Math.min(...arr); i <= Math.max(...arr); i++){ 
        sum += i; 
    } 
  return sum; 
 } 
 
 sumAll([1, 4]); 

:rocket: Код запуска

Код Объяснение:

  • Создание переменной суммы для хранения суммы элементов.
  • Запуск итерации цикла из min-элемента заданного массива и остановка при достижении максимального элемента.
  • Использование оператора спреда (... arr) позволяет передавать действительный массив функции вместо отдельных элементов.

Связанные ссылки

:clipboard: ПРИМЕЧАНИЯ ДЛЯ ВЗНОСОВ:

  • :warning: НЕ добавляйте решения, похожие на любые существующие решения. Если вы считаете, что это похоже, но лучше , попробуйте объединить (или заменить) существующее подобное решение.
  • Добавьте объяснение своего решения.
  • Классифицируйте решение в одной из следующих категорий - Basic , Intermediate и Advanced . :traffic_light:
  • Пожалуйста, добавьте свое имя пользователя, только если вы добавили соответствующее основное содержимое . ( :warning: НЕ удаляйте существующие имена пользователей )

Видеть :point_right: Wiki Challenge Solution Template для Wiki Challenge Solution Template для справки.