Código Javascript
:
Ver originalfunction fib(x){
var a = "0";
var b = "1";
var c = "0";
for (k=x;k>2;k--){
    c=a;
    a=b;
    b=suma(b,c);
}
    return suma(a,b);
}
function suma(a,b){
    var sumado = "";
    var num=0;
    if(b.length>a.length) {
        var c=a;
        var a=b;
        var b=c;
    }
    c="0"
    for(i=0; i<b.length ; i++){
        var num =eval(a.substring(a.length-1-i,a.length-i))+eval(b.substring(b.length-1-i,b.length-i))+eval(c);
        if(num>9){
            c="1";
            num=num-10;
        }else{
            c="0";
        }
        sumado=num.toString().concat(sumado);
    }
    i=b.length;
    while(i<a.length){
        if(c == "0"){
            num=eval(a.substring(a.length-1-i,a.length-i));
        }else{
            num=eval(a.substring(a.length-1-i,a.length-i))+1;
        }
        if(num>9){
            num=num-10;
        }else{
            c="0";
        }
        sumado=num.toString().concat(sumado);
        i++;
    }
    if(c =="1"){
        sumado=c.concat(sumado);
    }
    return sumado;
}
  
Bueno el mío a lo mejor es un poco menos efectivo que el vuestro.. pero bueno el resultado devuelto es válido. Saludoss