Gyakorlati alapok
Ami az X-faktorban soha nem lesz: faktoriális
A faktoriális-számítások főleg a kombinatorikában fordulnak elő, amely olyan kérdésekkel foglalkozik: például 12 db biliárdlyukba hányféleképpen tehetünk 7 db golyót úgy, hogy 1 lyukba nem teszünk 1-nél többet?
Jelölése a "!" jel, például:
5! = 120, ahol 5! = 1 x 2 x 3 x 4 x 5.
Legegyszerűbb a számítást for ciklussal elvégeznünk:
public class Main {
public static void main(String[] args) {
int eredmeny = 1;
for(int i = 1; i <= 5; i++){
eredmeny *= i;
}
System.out.println(eredmeny);
}
}
Végeredmény:
120
A kód érdekessége egy sajátos utasítás: eredmeny *= i. Erről már volt szó az Aritmetikai operátorok című fejezetben. Az utasítás voltaképpen az eredmeny = eredmeny * i tömörített változata. Ellenőrizzük ezt le az alábbi Java-kód futtatásával:
public class Main {
public static void main(String[] args) {
int eredmeny = 1;
for(int i = 1; i <= 5; i++){
eredmeny = eredmeny * i;
}
System.out.println(eredmeny);
}
}
Végeredmény:
120
A számítás nyilvánvalóan elvégezhető do-while ciklusokkal:
public class Main {
public static void main(String[] args) {
int eredmeny = 1;
int i = 1;
while (i <= 5){
eredmeny *= i;
i++;
}
System.out.println(eredmeny);
}
}
Végeredmény:
120
public class Main {
public static void main(String[] args) {
int eredmeny = 1;
int i = 1;
do{
eredmeny *= i;
i++;
}while (i <= 5);
System.out.println(eredmeny);
}
}
Végeredmény:
120
Talán nem véletlen, hogy a matematikai csomagban (java.math.*;) nincs előre legyártva a faktoriális számítás, hiszen az lényegében egy standard egész számokból (1, 2, 3, 4, 5, stb.) kiinduló számsorozat, előállítása bármelyik programozási nyelvben viszonylag könnyű feladat. Nézzük tehát meg ennek Java-implementációját 10. faktoriálisig:
public class Main {
public static void main(String[] args) {
int eredmeny = 1;
for(int i = 1; i <= 10; i++){
eredmeny *= i;
System.out.println(i
+ "!= " + eredmeny);
}
}
}
Végeredmény:
1!= 1
2!= 2
3!= 6
4!= 24
5!= 120
6!= 720
7!= 5040
8!= 40320
9!= 362880
10!= 3628800