Wpis z mikrobloga

jesli nie to dlaczego


@farmaceut: bo nie rozumiesz po co są pętle, ani jak działa silnia.

Nie musisz mnożyć 2 wyrazów w pętli, wystarczy, że w każdym obrocie pętli domnożysz 1 kolejny wyraz.

No i dodawanie tak pomnożonych par jest bez sensu, bo w silni nic się nie dodaje.
  • Odpowiedz
@farmaceut: silnie się robi po to żeby po to żeby ogarnąć rekurencję, dzięki której zrozumiesz rekurencję. To js? W pętli za każdym razem deklarujesz zmienna, to się robi przed pętla, inaczej się zesra albo nie zachowasz wartości, bo przecież co iteracja to nowa zmienna. W js po forze daje się średniki? Po co Ci ten if na początku? Silnia nie może być z liczby większej niż 11?
  • Odpowiedz
@tell_me_more: Moze dlatego, że się wczoraj zacząłem się uczyć javascript robiąc przykłady z codewars i posługując się w3school jako pomocy ( ͡° ʖ̯ ͡°) Dopiero 8 kyu i 12 punktów...
Rzeczywiscie += to mój błąd, ktorego nie zauwazylem. Tym niemniej - jak domnożyć w takim razie, aby za każdym obrotem zmieniała się wartość?

@Piotrp7: :O Tego nie znałem...

if (n <= 0) {
return 1;
}
  • Odpowiedz
@Masterczulki: Ay, nie gotowe rozwiązanie ( ͡° ʖ̯ ͡°) Chcialbym podpowiedzi
@PorryHatter: Warunek n<12 to wynika z zadania, że nie może być większe od 12 i mniejsze od 0 :) Tak wiem, += dla silni to mój głupi błąd...
@vrdst: Tak, JS ... Nie większa niż 12 wg zadania;)
  • Odpowiedz
@farmaceut: nie potrzebujesz rekurencji. Rekurencja to jeden ze sposobów na napisanie silni, i wcale nie najlepszy (ale często siętego wymaga, żeby sprawdzić, czy ktoś umie rekurencję).

Domnożyć możesz po prostu

x = x * cośtam;

Krócej:

x *= cośtam;

I to cośtam nie musi być stałe.

A silnię najłatwiej zrobić tak:

var wynik = 1;
for (int i=2; i<=n; i++) {
wynik *= i;
}
return wynik;
  • Odpowiedz
@farmaceut:
0 < n < 12
Ten warunek nie zadziała tak, jak myślisz. Jeśli się nie mylę, zawsze będzie prawdziwy, bo zostanie wykonany od lewej do prawej: najpierw (0<n), co będzie albo prawdą, albo fałszem zależnie od wartości n. Natomiast później ten wynik (prawda/fałsz) zostanie porównany z wartością 12. Czyli w JS będzie to albo (0<12) albo (1<12), co zawsze jest prawdziwe.

Sprawdzenie takiego warunku, o który jak myślę Ci chodzi,
  • Odpowiedz