Ugrás a tartalomhoz

factorial

A Wikiszótárból, a nyitott szótárból

Főnév

factorial (tsz. factorials)

  1. (matematika, informatika) faktoriális

A faktoriális (n!) egy matematikai művelet, amely egy pozitív egész szám összes pozitív egész számának szorzataként van definiálva. Azaz, a n! a következőképpen néz ki:

n! = n × (n-1) × (n-2) × ... × 1

Például:

5! = 5 × 4 × 3 × 2 × 1 = 120
3! = 3 × 2 × 1 = 6

A faktoriális kiszámítható iteratív vagy rekurzív módszerrel. Az alábbiakban bemutatok két megoldást is C++-ban.

1. Iteratív megoldás

Az iteratív megoldásnál egy ciklus segítségével számítjuk ki a faktoriális értékét. Ez a módszer gyorsabb és hatékonyabb, mivel nem használ túl sok memóriát.

#include <iostream>
using namespace std;

int main() {
    int n;
    cout << "Add meg a számot, amelynek a faktoriálisát szeretnéd kiszámítani: ";
    cin >> n;

    long long result = 1;  // A faktoriális kezdeti értéke (1-től indul)
    
    // Iteratív ciklus a faktoriális kiszámításához
    for (int i = 1; i <= n; i++) {
        result *= i;  // Minden lépésben megszorozzuk az aktuális számot
    }

    cout << n << "! = " << result << endl;
    return 0;
}

Magyarázat: - A felhasználótól bekérjük a számot, amelynek a faktoriálisát szeretnénk kiszámítani. - Az result változó kezdetben 1, és egy for ciklus segítségével megszorozzuk a számokat 1-től n-ig. - A végén kiírjuk a faktoriális eredményt.

2. Rekurzív megoldás

A rekurzív megoldásnál egy rekurzív függvény segítségével számoljuk ki a faktoriálist. A rekurzió addig hívja önmagát, amíg el nem éri az alapállapotot (1!).

#include <iostream>
using namespace std;

// Rekurzív függvény a faktoriális kiszámításához
long long factorial(int n) {
    if (n == 0 || n == 1) {
        return 1;  // Az alapértelmezett eset (0! = 1 és 1! = 1)
    } else {
        return n * factorial(n - 1);  // Rekurzív hívás
    }
}

int main() {
    int n;
    cout << "Add meg a számot, amelynek a faktoriálisát szeretnéd kiszámítani: ";
    cin >> n;

    long long result = factorial(n);  // A rekurzív függvény hívása
    cout << n << "! = " << result << endl;
    return 0;
}

Magyarázat: - A factorial függvény rekurzív módon számítja ki a faktoriális értéket. Ha n == 0 vagy n == 1, akkor visszaadja az 1-et (mivel 0! = 1 és 1! = 1). - Ha a bemeneti szám nagyobb, akkor a függvény rekurzívan hívja magát n-1 értékkel, majd szorzást végez. - A főprogramban a felhasználó által megadott szám faktoriálisát számoljuk ki.

Példa kimenet:

Ha a felhasználó 5-öt ad meg, a kimenet így néz ki:

Add meg a számot, amelynek a faktoriálisát szeretnéd kiszámítani: 5
5! = 120

Megjegyzés:

  • Iteratív megoldás: Az iteratív módszer jobb teljesítményt nyújt, mivel nem igényel túl sok memóriát, és elkerüli a túl mély rekurziókat, amelyek hibákat okozhatnak nagy számoknál.
  • Rekurzív megoldás: A rekurzív megoldás szebb és tisztább kódot eredményez, de nagyobb számoknál előfordulhat, hogy a rekurzió túl mélyre megy, és stack overflow (túlfutás) hibát okozhat.