Как рекурсивно получить значения Фибоначчи, которые меньше заданного числа?

Мне нужно написать функцию с помощью рекурсии не используя при этом массиве.который вернет все значения цифр Фибоначчи до n . n>0;

function fib(number) {
  if (number === 1) {
    return "0,1,1";
  }
  if (number === 2) {
    return "0,1,1,2,";
  } else {
    let fibList = fib(number - 1);
    return (fibList += `${number - 2 + number - 1},`);
  }
}
console.log(fib(45));


мой код не работает как я хочу не знаю как это исправить.

n=7 “0, 1, 1, 2, 3, 5 “
n=45 “0, 1, 1, 2, 3, 5, 8, 13, 21, 34”
  • Вопрос задан
  • 176 просмотров
Решения вопроса 1
0xD34F
@0xD34F Куратор тега JavaScript
function fib(max) {
  const next = (p1, p2) => p2 <= max ? ',' + p2 + next(p1 + p2, p1) : '';
  return 0 + next(1, 1);
}


fib(0)   // "0"
fib(1)   // "0,1,1"
fib(10)  // "0,1,1,2,3,5,8"
fib(45)  // "0,1,1,2,3,5,8,13,21,34"
fib(100) // "0,1,1,2,3,5,8,13,21,34,55,89"
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 1
@Karpion
Почему у Вас в строке
return "0,1,1";
нет запятой в конце, а в строке
return "0,1,1,2,";
запятая есть?

А что вообще не так? Что есть и что должно быть?
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы