Add BIG numbers functionally

by Mohammed Ismail Ansari

JavaScript

function addBigNumbers(number1, number2) {
    function addLastDigit(number1, number2, seed, carry) {
        var number1LSD = number1 ? parseInt(number1.substr(number1.length-1, 1)) : 0,
            number2LSD = number2 ? parseInt(number2.substr(number2.length-1, 1)) : 0,
            result = getSum(number1LSD, number2LSD, carry),
            newCarry = getCarry(number1LSD, number2LSD, carry);
        
        return !number1 && !number2 ?
                (carry || "") :
                addLastDigit(number1.substr(0, number1.length-1), 
                                number2.substr(0, number2.length-1), 
                                result, 
                                newCarry) + result;
    }
    
    function getSum(a, b, c) {
        var d = (a + b + c).toString();
        return (d.length > 1) ? d[1] : d;
    }
    
    function getCarry(a, b, c) {
        var d = (a + b + c).toString();
        return (d.length > 1) ? parseInt(d[0]) : 0;
    }
    
    return addLastDigit(number1, number2, "", 0);
}

var number1 = "909";
    number2 = "400";
var bigresult = addBigNumbers(number1, number2);
alert(number1 + " + " + number2 + " = " + bigresult);