Chrome консоль вылетела из-за использования i-- вместо i-1 - PullRequest
1 голос
/ 08 мая 2020

Итак, я делал программу на искателе рядов Фибоначчи в javascript всякий раз, когда я использую i-- в программе вместо консоли i-1 происходит сбой, я ищу ответ, почему он дает сбой как i--, так и i -1 сделайте то же самое, вот мой код: -

function fibonacciGenerator(n) {
  var output = [];
  if (n === 0) {
    return output;
  } else if (n === 1) {
    output.push(0);
    return output;
  } else if (n === 2) {
    output.push(0, 1);
    return output;
  } else {
    output.push(0, 1);
    for (var i = 1; i <= n - 2; i++) {
      output.push(output[i - 1] + output[i]); // Here I was using i-- which caused crash
    }
    return output;
  }
}

Ответы [ 4 ]

3 голосов
/ 08 мая 2020

Давайте посмотрим на a для l oop, используя i--:

for (var i = 1 ; i <= VAL ; i++) {
  i--;
}

Первый раз в l oop, i устанавливается в 1, затем i-- устанавливает i в 0 , затем для l oop устанавливает его в 1, затем i-- устанавливает i в 0 и т. д.

У вас есть бесконечное l oop.

1 голос
/ 08 мая 2020

i-- это то же самое, что и i = i - 1
i-1 - это уравнение, вам нужно, чтобы оно равно чему-то

1 голос
/ 08 мая 2020

Если вы используете i--, для расчета будет использовано старое значение, а затем значение i будет уменьшено на 1. Но когда вы используете i-1, он сначала уменьшается, и это значение, которое вы ищете в выходном массиве.

0 голосов
/ 08 мая 2020

Проблема в том, что уменьшение i внутри этого for приводит к бесконечности l oop. Однако, если вы просто используете значение i и вычитаете 1, вы не присваиваете какое-либо новое значение i.

...