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:

 

www.informatika-programozas.hu - Futtatható Java-kód!

 

 

 

 

 

 

 

 

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:

 

www.informatika-programozas.hu - Futtatható Java-kód!

 

 

 

 

 

 

 

 

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:

 

www.informatika-programozas.hu - Futtatható Java-kód!

 

 

 

 

 

 

 

 

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

 

www.informatika-programozas.hu - Futtatható Java-kód!

 

 

 

 

 

 

 

 

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:

 

www.informatika-programozas.hu - Futtatható Java-kód!

 

 

 

 

 

 

 

 

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