factorial
Főnév
factorial (tsz. factorials)
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.