大数相加

主要思想

  1. 数字->字符串->数组->转置
  2. 操作数数组对齐,不齐位补0
  3. 数组对位相加,>10 进1位,结果push入新数组
  4. 数组转置,转字符串
var n1 = 98765432109
var n2 = 12345678900954

var arr_n1 = n1.toString().split('').reverse().map(item => Number(item))
// console.table(arr_n1);

var arr_n2 = n2.toString().split('').reverse().map(item => Number(item))
// console.table(arr_n2);

let arr_n1_length = arr_n1.length
let arr_n2_length = arr_n2.length

if (arr_n1_length < arr_n2_length) {
  let pre = new Array(arr_n2_length - arr_n1_length)
  pre.fill(0, 0, arr_n2_length - arr_n1_length)
  arr_n1 = arr_n1.concat(pre)
} else {
  let pre = new Array(arr_n1_length - arr_n2_length)
  pre.fill(0, 0, arr_n1_length - arr_n2_length)
  arr_n2 = arr_n2.concat(pre)
}


function plus(arr1, arr2) {
  var n1 = 0, n2 = 0, tmp = 0, sum = 0
  const result = [];
  for (let index = 0; index < arr1.length; index++) {
    n1 = arr1[index];
    n2 = arr2[index];
    sum = n1 + n2 + tmp;
    if (sum > 9) {
      sum -= 10
      tmp = 1
    }
    else {
      tmp = 0
    }
    result.push(sum)
  }
  if (tmp === 1) {
    result.push(1)
  }
  return result
}

var result = plus(arr_n1, arr_n2).reverse()

console.table(result)
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值