class RekursjonFakultet {
public static void main(String[] args) {
// Tester 5!, 4! og 1!
testFakultet(5, fakultet(5), 120);
testFakultet(4, fakultet(4), 24);
testFakultet(1, fakultet(1), 1);
testFakultet(0, fakultet(0), 1);
}
// Vi vet at 5! = 5*4*3*2*1 = 5 * 4! = 5*4 * 3! = 5*4*3 * 2! = 5*4*3*2 * 1! = 5*4*3*2*1
static int fakultet(int tall) {
if (tall <= 1) {
// Basistilfelle
return 1;
}
// Rekursivt kall, n! = n * (n-1)!
return tall * fakultet(tall-1);
}
// Liten testmetode for fakultet, printer om resultatet var forventet eller ikke
static void testFakultet(int tall, int resultat, int forventet) {
System.out.print("Testet " + tall + "! : ");
if (resultat == forventet) {
System.out.println(resultat + " - OK");
} else {
System.out.println("FEIL - fikk " + resultat + " istedenfor " + forventet);
}
}
}