function add(a, b) {
// 还需要考虑a, b是数值的情况
let i = a.length - 1;
let j = b.length - 1;
let res = '';
let carry = 0;
while (i >= 0 || j >= 0) {
let x = 0;
let y = 0;
let sum = 0;
if (i >= 0) {
x = a[i--] - '0'; // 将字符串转为数值
}
if (j >= 0) {
y = b[j--] - '0';
}
sum = x + y + carry; // 每次对应位数相加时还需要加上上一位的进位
if (sum >= 10) { // 如果sum大于10的话,需要产生一个进位
carry = 1;
sum -= 10;
} else {
carry = 0;
}
// 这里是字符串拼接
res = sum + res;
}
if (carry) {
// 最后还需要将进位值和res进行拼接
res = carry + res;
}
return res;
}
console.log(add('889', '1'));
console.log(add('999', '1'));
console.log(add('123', '321'));
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
Number.MAX_VALUE // 1.7976931348623157e+308
Number.MAX_SAFE_INTEGER // 9007199254740991
Number.MIN_VALUE // 5e-324
Number.MIN_SAFE_INTEGER // -9007199254740991
1
2
3
4
2
3
4