【算法】大整数加法

思路:

  思路比较简单,将大数据的每位进行加法,记录进位即可。需要注意的是,两个数据中较长的一个需要另外单独处理多出的部分,在程序最后还要加上最高位的进位。

代码:

function sum(a,b){
        var strA= a.toString(),
            strB= b.toString();
        var arrA=strA.split("").reverse(),
            arrB=strB.split("").reverse();
        var aLen=arrA.length,
            bLen=arrB.length;

        if(aLen==1||bLen==1){
            return a+b;
        }
        var flag= 0,re=[],temp=0;
        var maxLen=Math.min(aLen,bLen);
        for(var i=0;i<maxLen;i++){
            temp=parseInt(arrA[i])+parseInt(arrB[i])+flag;
            if (temp > 9) {
                re.push(temp - 10);
                flag= 1;
            } else {
                re.push(temp);
                flag = 0;
            }
        }

        var cloneArr=aLen>bLen?arrA:arrB;
        for(len=cloneArr.length;i<len;i++){
            temp=parseInt(cloneArr[i])+flag;
            if (temp > 9) {
                re.push(temp - 10);
                flag= 1;
            } else {
                re.push(temp);
                flag = 0;
            }
        }

        if(flag){
            re.push(flag);
        }
        return parseInt(re.reverse().join(""));
    }

 

posted @ 2016-03-26 11:55  很好玩  阅读(453)  评论(0编辑  收藏  举报