Распечатайте ряд Фибоначчи, используя карту или уменьшите в javascript - PullRequest
0 голосов
/ 21 сентября 2018

Я хочу напечатать ряд Фибоначчи, используя функцию map () или redu () в Javascript.Я не могу найти что-либо в Интернете для этого.Я не совсем уверен, что мое состояние будет на карте ().

Я в основном пишу

fib(n){
return new Array(n-1).fill(1).map((_,i) => *This is where I am confused* ) ;
}

Ответы [ 4 ]

0 голосов
/ 21 сентября 2018

Я пробовал в моей консоли, она отлично работает Вы можете следить за этим.Надеюсь, это поможет вам запустить его из консоли Google.

function Fibonacci(n) {
    var f = [];
    for (var c = 0; c < n; ++c) {
        f.push((c < 2) ? c : f[c-1] + f[c-2]);
    }
    return f;
}
0 голосов
/ 21 сентября 2018

Это относительно легко сделать с помощью reduce(), просто проверьте индекс и действуйте соответственно:

function fib(n){
  return new Array(n).fill(1).reduce((arr, _ ,i) => {
      arr.push((i <= 1) ? i : arr[i-2] + arr[i-1])
      return arr
  },[]) ;
}
console.log(fib(10))

map() не особенно подходит, потому что у вас нет естественного способа доступа к более ранним состояниям.

0 голосов
/ 21 сентября 2018

Ниже приведен код вашей проблемы.«elem» - текущее текущее значение, «index» - текущий индекс, а «currentArray» - экземпляр массива.

fibonacci = (n)=>{
    return new Array(n).fill(0).map((elem,index, currentArray)=>{
        if(index === 0){
            currentArray[index] = 0;
        }else if(index === 1){
            currentArray[index] = 1;
        }else{
            currentArray[index] = currentArray[index-2]+currentArray[index-1];
        }
        return currentArray[index];
    });  
}

Вы можете видеть, что для каждого шага мы модифицируем элемент массива, используятекущий индекс, а затем вернуть элемент с текущим индексом.Наконец, вы получите массив рядов Фибоначчи после завершения итерации.

0 голосов
/ 21 сентября 2018

Вы можете сопоставить его с Array.from и двумя начальными значениями для получения серии.

function fib(length) {
    return Array.from({ length }, ((a, b) => _ => ([b, a] = [a + b, b, a])[2])(0, 1));
}

console.log(fib(10));
.as-console-wrapper { max-height: 100% !important; top: 0; }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...