Problem z dodawaniem w pętli.

0

Cześć, powiedzcie czemu w pętli do zmiennej result nie dodają się kolejne iteracje zmiennej closure? Zmienna result zachowuje początkową wartość zero a w console.logach widać że zmienne closure iteruje się poprawnie a wynikiem jest number.

function getPi(n){
    var result = 0;
    var pi = 4*result;
    for (var i=0;i<=n; i++){
        var closure = (1/(1+(4*i)))+(1/(3+(4*i)));
        console.log(closure);
        result = result + closure;
        console.log(pi);
    }
    return pi;
}
console.log(getPi(9));
1

Zmienna result jest aktualizowana - zmienna pi za to nie, ponieważ jej wartość ustawiasz na 4*result tylko raz, na początku funkcji; porównaj to z tym kodem:

function getPi(n) {
  let result = 0;

  for (let i = 0; i < n; i++) {
    result += (1/(1+(4*i)))+(1/(3+(4*i)));
  }

  return 4 * result;
}

Btw, dlaczego nazwałeś swoją zmienną closure?

0

Dzięki, nazwałem ją tak bo chciałem jakoś zaznaczyć i zapamiętać że chodzi mi o wzór który jest w kolejnych domkniętych nawiasach. Wiem, pewnie można byłó nazwać ją dużo prościej. Uczę się. :))

0

Na ogół zadanie prezentuje się tak.

"Napisz funckję getPi(n), która jako argument przyjmuje liczbę n, oznaczającą liczbę iteracji. Funkcja ma zwracać wartość liczby Pi. Użyj następującej formuły:

pi = 4 * ((1/1 - 1/3) + (1/5 - 1/7) + (1/9 - 1/11) + ...)

Zobacz, jak zmienia się precyzja wyniku w zależności od liczby iteracji pętli."

Ale chyba źle do niego podchodzę. Może coś podpowiecie?

1

We wzorze masz odejmowanie - gdzie jest ono odzwierciedlone w Twoim kodzie?

1 użytkowników online, w tym zalogowanych: 0, gości: 1