手写系列之大数相加 - 图1


    实现了大数的相加的实现思路

    1. const add = (a, b) => {
    2. // 1. 先转换字符串
    3. a = a + ''
    4. b = b + ''
    5. // 获取最大个数
    6. const max = Math.max(a.length, b.length)
    7. a = a.padStart(max, '0')
    8. b = b.padStart(max, '0')
    9. let surplus = 0,
    10. sum = '',
    11. i = max - 1
    12. for (; i >= 0; i -= 1) {
    13. // 将两个值的最后一位相加
    14. const total = +a[i] + +b[i]
    15. // 获取个数位的值
    16. const discuss = total % 10
    17. // 个数位的值 + 上一次的进位结果
    18. const nums = surplus + +discuss
    19. surplus = 0
    20. if (total > 9) surplus += 1
    21. if (nums > 9) surplus += 1
    22. // 计算结果
    23. sum = (sum === '' ? nums % 10 : (nums % 10) + sum) + ''
    24. }
    25. return sum
    26. }
    • 两个数的个数必须相等
    • 从后往前依次添加,如果遇到大于10的,直接进位,参数下一次运算