#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 уже делает то, что вы хотите?