Введение
В этом проекте вы научитесь реализовывать функцию, которая может складывать два больших целых числа, представленные в виде строк. Это распространённая задача, возникающая в реальных сценариях, где встроенный в JavaScript тип данных number имеет ограничения при представлении и выполнении арифметических операций над крайне большими числами.
Задачи
В этом проекте вы научитесь:
- Настраивать окружение проекта и создавать необходимые файлы.
- Реализовывать логику сложения двух больших чисел, представленных в виде строк.
- Тестировать функцию
addBigNumна предоставленных примерах. - Исследовать способы оптимизации решения (по желанию).
Достижения
В этом проекте вы научитесь:
- Работать с большими числами в JavaScript, представляя их в виде строк.
- Техники обработки граничных случаев и обеспечение правильности операции сложения.
- Стратегии оптимизации производительности функции
addBigNum. - Лучшие практики написания поддерживаемого и читаемого кода.
Настройка окружения проекта
В этом шаге вы настроите окружение проекта и создадите необходимые файлы для проекта "Сложение больших целых чисел".
Откройте предпочитаемый редактор кода и перейдите в директорию
/home/labex/project.Создайте новый файл с именем
addBigNum.jsв директории/home/labex/project.В файле
addBigNum.jsдобавьте следующий код в качестве начальной точки:
/*
Складывает два больших числа, представленные в виде строк, и возвращает сумму в виде строки.
Параметры:
- num1: Строка, представляющая первое большое число.
- num2: Строка, представляющая второе большое число.
Возвращает:
- Строка, представляющая сумму двух входных чисел.
*/
function addBigNum(num1, num2) {
// Ваш код здесь
}
module.exports = addBigNum;
Этот код определяет функцию addBigNum и экспортирует ее, как требуется в инструкциях проекта.
Реализовать логику сложения
В этом шаге вы реализуете логику сложения двух больших чисел, представленных в виде строк.
- В функции
addBigNumначните с преобразования входных строкnum1иnum2в массивы цифр.
const digits1 = num1.split("").map(Number); // Преобразуйте строку num1 в массив цифр
const digits2 = num2.split("").map(Number); // Преобразуйте строку num2 в массив цифр
- Убедитесь, что массивы
digits1иdigits2имеют одинаковую длину, добавив ведущие нули, если необходимо.
while (digits1.length < digits2.length) {
digits1.unshift(0);
}
while (digits2.length < digits1.length) {
digits2.unshift(0);
}
- Инициализируйте массив
resultдля хранения цифр конечной суммы и переменнуюcarry, чтобы отслеживать значение переноса при сложении.
const result = [];
let carry = 0; // Значение переноса для сложения
- Пройдитесь по цифрам справа налево, выполняя сложение и обновляя значение
carry.
for (let i = digits1.length - 1; i >= 0; i--) {
const sum = digits1[i] + digits2[i] + carry;
const digit = sum % 10; // Текущее значение цифры
carry = Math.floor(sum / 10); // Вычислите перенос
result.unshift(digit); // Добавьте текущую цифру в начало массива результата
}
- Если есть оставшееся значение переноса, добавьте его в начало массива
result.
if (carry > 0) {
result.unshift(carry);
}
- Преобразуйте массив
resultв строку и верните ее в качестве конечной суммы.
const sumStr = result.join(""); // Преобразуйте массив результата в строку
return sumStr;
Тестировать функцию addBigNum
В этом шаге вы будете тестировать функцию addBigNum на предоставленных примерах.
- В редакторе кода добавьте следующий код в конец файла
addBigNum.js:
// Тестирование функции addBigNum
console.log(addBigNum("0", "0")); // Вывод: 0
console.log(addBigNum("99", "1")); // Вывод: 100
console.log(addBigNum("11", "123")); // Вывод: 134
console.log(addBigNum("9007199254740992", "1")); // Вывод: 9007199254740993
- Сохраните файл
addBigNum.jsи запустите скрипт в терминале:
node /home/labex/project/addBigNum.js
Вывод должен соответствовать ожидаемым результатам в инструкциях проекта.
Улучшить и оптимизировать решение (по желанию)
В этом необязательном шаге вы можете исследовать способы дальней оптимизации функции addBigNum. Некоторые возможные улучшения включают:
- Обработка отрицательных чисел или нуля в качестве входных данных.
- Повышение производительности при работе с крайне большими числами.
- Добавление обработки ошибок для некорректных входных данных.
- Повышение читаемости и поддерживаемости кода.
Не стесняйтесь экспериментировать с кодом и вносить любые необходимые изменения, чтобы улучшить общее решение.
Поздравляем! Вы завершили проект "Сложение больших целых чисел". Если у вас есть вопросы или нужна дальней помощь, не стесняйтесь задавать их.
Резюме
Поздравляем! Вы завершили этот проект. Вы можете практиковаться в более многих лабораторных работах в LabEx, чтобы улучшить свои навыки.



