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
- Bringen Sie das Programm zum Laufen.
- Testen Sie das Programm mit anderen Zahlen.
- Ändern Sie das Programm so ab, dass auch die 0 verwendet werden kann (Hinweis: 0! = 1).
- Ändern Sie das Programm so ab, dass die Zahlen als Parameter übergeben werden.
- Ändern Sie das Programm so ab, dass bei Eingabe negativer Zahlen die Fehlermeldung kommt: "Der Parameter muss grösser 0 sein!"
- Ändern Sie das Programm so ab, dass bei Eingabe gebrocher Zahlen ("Kommazahlen") die Fehlermeldung kommt: "Der Parameter muss eine ganze Zahl sein!"
- Ergänzen Sie das Programm um eine Überschrift (unterstrichen, danach Leerzeile).
- Ä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
|