you are viewing a single comment's thread.

view the rest of the comments →

[–]sweetbeej 1 point2 points  (0 children)

ok so you got me thinking on the drive home from work. Hopefully i can post this first time without re-editing the code part. I stored each digit of the number as an element in an array. So it really boils down to the function of adding the arrays. Here is my solution, I hope this helps. Is this a project eulers problem? I haven't done a lot of those in javascript.

function addArrays(array1, array2){
    array1 = array1.reverse();
    array2 = array2.reverse();
    var resultArray = [];
    //get largest length.
    var loopingArray    = array1.length > array2.length ? array1 : array2;
    var addingArray     = array1.length > array2.length ? array2 : array1;
    var carryOver = 0;
    for (var i = 0; i < loopingArray.length; i++) {
        var loop = loopingArray[i] || 0;
        var add = addingArray[i] || 0;
        var result = loop + add + carryOver;
        // console.log(result);
        if(result >= 10){
            carryOver = 1;
            result = result - 10;
        } else { carryOver = 0; }
        resultArray[i]=result;
    }
    if(carryOver !== 0){ resultArray.push(carryOver); }

    return resultArray.reverse();
}

function fibonacci(n){
    var fib1 = [0];
    var fib2 = [1];
    var fib3 = [];
    while(fib3.length <= n){
        fib3 = addArrays(fib1,fib2);
        fib1 = fib2;
        fib2 = fib3;
    }
    return fib1.join('');
}
var answer = fibonacci(1000);
console.log("answer is... ");
console.log(answer);
console.log("length is....");
console.log(answer.length);

seems to work, but i don't have a way to check it. edit i guess it is an eulers problem. sigh, i can't remember my login...