实现加法逻辑
在这一步中,你将实现将两个以字符串形式表示的大数相加的逻辑。
- 在
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;