[JavaScript] Jak obliczyć silnię?

Silnia jest matematyczną operacją, która polega na mnożeniu wszystkich liczb całkowitych od 1 do danej liczby całkowitej. Oznacza się ją symbolem "!". Np. 4! = 1 * 2 * 3 * 4 = 24.

Aby obliczyć silnię w JavaScript, można skorzystać z pętli lub rekurencji. Oba podejścia są równie poprawne, ale różnią się sposobem implementacji. Przyjrzyjmy się obu metodom:

Pętla

Pierwszym sposobem jest użycie pętli do iteracji przez liczby od 1 do danej liczby i pomnożenie ich:

function calculateFactorial(number) {

  let result = 1;
  
  for (let i = 1; i <= number; i++) {
  
    result *= i;
    
  }
  
  return result;
  
}

const num = 5;
const factorial = calculateFactorial(num);

alert(num + '! = ' + factorial);

W powyższym kodzie zdefiniowaliśmy funkcję `calculateFactorial`, która przyjmuje jedną argument - `number`. Inicjalizujemy zmienną `result` na 1, ponieważ chcemy mnożyć liczby przez siebie. Następnie używamy pętli `for` do iteracji od 1 do `number` i mnożymy `result` przez aktualną wartość `i`. Na końcu zwracamy wynik.

Rekurencja

Drugim sposobem jest użycie funkcji rekurencyjnej, czyli funkcji, która wywołuje samą siebie:

function calculateFactorial(number) {
  if (number === 0) {
    return 1;
  } else {
    return number * calculateFactorial(number - 1);
  }
}

const num = 10;
const factorial = calculateFactorial(num);

alert(num + '! = ' + factorial);

W powyższym kodzie sprawdzamy, czy `number` jest równa zero. Jeśli tak, zwracamy 1, ponieważ 0! wynosi 1. W przeciwnym razie, zwracamy `number` pomnożoną przez `calculateFactorial(number - 1)`. To wywołanie funkcji rekurencyjnej powoduje obliczenie silni dla liczby mniejszej o 1, aż do osiągnięcia przypadku bazowego.

Oba powyższe przykłady pokazują, jak obliczyć silnię w języku JavaScript. Wybór metody zależy od preferencji programisty i kontekstu, w jakim jest używana. Pamiętaj, że silnia jest definiowana tylko dla liczb całkowitych większych lub równych zero.

Komentarze

Popular

[C++] Jak obliczyć pole i obwód trapezu?

[HTML] Jak wyśrodkować tekst?

[PHP] Jak pobrać adres strony?