Сбой тестового примера серии ошибок Javascript

#javascript #fibonacci

#javascript #фибоначчи

Вопрос:

Я пытаюсь выполнить это задание для ряда Фибоначчи Javascript. Логика работает для входных данных 5 и 6. Но тестовый пример для 8 терпит неудачу.

 function fibonacciSequence(input) {
    //Type your code here.
        var i = 0;
    var fib = [];
    fib[0] = 0;
    fib[1] = 1;
    
    var out ="0"  ""  "1";
    
    for (i = 2; i <=input; i  ) {
        fib[i] = fib[i-2]   fib[i-1];

    out = out  ""  fib[i];
    console.log("i is"   i   " out is"   out);
        
    }  


    return out;
}
  

Я не могу понять, что происходит не так..

Ответ №1:

Похоже, что все просто запутывается с тем, как вы добавляете элементы в строку. Поскольку между ними нет пробела out "" fib[i] , я думаю, что это будет мешать форматированию. Как только у меня появились пробелы, кажется, что все работает нормально, двузначное число не будет путаться с такой строкой.

 function fibonacciSequence(input) {
    var fib = [];
    fib[0] = 0;
    fib[1] = 1;
    let out = ""
    out = ` ${0} `
    out = `${1}`
    for (let i=2; i <=input; i  ) {
        fib[i] = fib[i-2]   fib[i-1];
        out = ` ${fib[i]}`
    }
    return out;
}  

Комментарии:

1. Извините, я пропустил включение ожидаемого результата.. fibonacciSquenence(5) должен возвращать «0 1 2 3 5». Когда я запускаю его с помощью ввода 8, вывод (стандартный вывод) показывает 0 1 1 2 3 5 8 1 3 2 1

2. Похоже, проблема в том, как символы хранятся в массиве, последние два числа (13 и 21) равны 2 цифрам. Поэтому они печатаются отдельно

Ответ №2:

Вы сравниваете входные данные (которые, похоже, могут быть числом, на котором вы хотите остановиться) с i, которое (плюс или минус немного) является количеством чисел в списке. Вероятно, вы хотите сравнить fib [i] или что-то подобное с input, чтобы решить, следует ли завершать цикл.

Редактировать: если это неправильно, и вы хотите, чтобы вводом было количество чисел в списке, тогда вы можете просто присоединиться к fib в конце:

 function fibonacciSequence(input) {
    //Type your code here.
    var i = 0;
    var fib = [];
    fib[0] = 0;
    fib[1] = 1;
    
    //var out ="0"  ""  "1";
    
    for (i = 2; i <=input; i  ) {
        fib[i] = fib[i-2]   fib[i-1];

    //out = out  ""  fib[i];
    //console.log("i is"   i   " out is"   out);
        
    }  


    return fib.join(' ');
}

for(let j = 0; j < 9; j  )
  console.log('input: '   j   ' :: ', fibonacciSequence(j));  

Если не… Я ошибся концом палки, и ответ @Grant Herman уже делает то, что вы хотите?