Die Webseiten der Fachschaft Informatik am ERG Saalfeld


Fakultät

Wie auf der Seite bierdeckel.html angegeben, ist die rekursive Definition der Fakultät:

 fak(1) = 1
 fak(n) = n * fak(n-1)


Diese Definition wird praktisch 1:1 in eine Funktion geschrieben und im Hauptprogramm wird diese Funktion aufgerufen. Das Programm sieht dann so aus:
 

Programm

use strict;
use warnings;

my $ergebnis = &fak(5);
print $ergebnis, "\n";

##### Ende des Hauptprogramms #####

sub fak {
  my $n = shift;

  my $rueckgabe;

  if ($n == 1) {
    $rueckgabe = 1;
  }
  else {
    $rueckgabe = $n * &fak($n-1);
  }

  return $rueckgabe;
}

__END__

 

Der Aufruf sah bei mir so aus:

 

Aufgaben

  1. Bringen Sie das Programm zum Laufen.
  2. Testen Sie das Programm mit anderen Zahlen.
  3. Ändern Sie das Programm so ab, dass auch die 0 verwendet werden kann (Hinweis: 0! = 1).
  4. Ändern Sie das Programm so ab, dass die Zahlen als Parameter übergeben werden.
  5. Ändern Sie das Programm so ab, dass bei Eingabe negativer Zahlen die Fehlermeldung kommt: "Der Parameter muss grösser 0 sein!"
  6. Ändern Sie das Programm so ab, dass bei Eingabe gebrocher Zahlen ("Kommazahlen") die Fehlermeldung kommt: "Der Parameter muss eine ganze Zahl sein!"
  7. Ergänzen Sie das Programm um eine Überschrift (unterstrichen, danach Leerzeile).
  8. Ändern Sie das Programm so ab, dass die Ausgabe so erfolgt (hier für Parameter 5): "fak(5) = 120"

 

zurück


© ERG Saalfeld   -   Hans-Dietrich Kirmse   24.05.2015