Trockentest Algorithmus, mathematischen Zusammenhang angeben

Hey :p

Ich hab folgende Aufgabe für die Uni:

Analysieren Sie im Trockentest den gegebenen Algorithmus. Geben Sie für diesen Algorithmus den mathematischen Zusammenhang an. Welchen Rückgabewert hat die Methode, wenn für zahl der Wert 4 bzw. 7 übergeben wird?

public long berechnen(int zahl)
{
long resultat = 1;
for (int i = 1; i <=zahl; i++) {
resultat = resultat * i;
}
return resultat;
}
}

Ich habe den Algorithmus mit einigen Zahlen ausprobiert:

1=1
2=2
3=6
4=24
5=120
6=720
7=5040
8=40320

Mir ist aufgefallen, dass die Werte exponentiell steigen und das Startwert/ Ergebnis immer den Wert von dem vorherigen Ergebnis besitzt. Reicht das als Antwort (Mir ist nicht ganz klar was ein Trockentest ist).

Außerdem habe ich versucht aufzuschreiben was der Algorithmus macht und komme dabei auf das Ergebnis, dass der Algorithmus immer 1 mal i rechnet bis die Abbruchbedingung erreicht ist. Das würde ja heißen der letzte Durchlauf ist immer 1 mal die eingeben Zahl was ja offensichtlich nicht stimmt. Ich bin dankbar für jede Hilfe!

solange i (1) kleiner gleich <= zahl (1), Schrittweite 1 ->

resultat = resultat * i (1)
resultat = resultat * i (2) xxx i ist größer als zahl -> Abbruch
= 1


solange i (1) kleiner gleich <= zahl (2), Schrittweite 1->

resultat = resultat * i (1)
resultat = resultat * i (2)
resultat = resultat * i (3) xxx i ist größer als zahl -> Abbruch
= 2

Es wäre ein Traum wenn mir jemand aus der Community helfen könnte. Vielen Dank schonmal und frohe Weihnachten.
 

osion

Bekanntes Mitglied
Der gegebene Algorithmus berechnet das Fakultätsergebnis der übergebenen Zahl. Die Fakultät einer Zahl ist das Produkt aller positive ganzen Zahlen bis zu dieser Zahl. Beispielsweise ist die Fakultät von 4 (4!) gleich 432*1 = 24.

Der mathematische Zusammenhang für die Fakultät einer Zahl n ist: n! = n * (n-1) * (n-2) * ... * 2 * 1.

In dem gegebenen Algorithmus wird dieser Zusammenhang durch den for-Schleifenkörper umgesetzt, indem das Ergebnis (resultat) mit jeder Iteration um den Faktor i multipliziert wird, wobei i von 1 bis zahl läuft.

Der Rückgabewert der Methode berechnen() für zahl=4 ist 24 und für zahl=7 ist der Rückgabewert 5040.

Der Trockentest ist ein Test, bei dem ein Algorithmus ohne Eingabe von realen Daten getestet wird. In diesem Fall könnte man den gegebenen Algorithmus zum Beispiel durch manuelles Berechnen der Fakultäten für verschiedene Zahlen testen, um zu überprüfen, ob der Algorithmus das korrekte Ergebnis liefert.

Ein Beispiel für einen Trockentest des gegebenen Algorithmus zur Berechnung der Fakultät einer Zahl könnte folgendermaßen aussehen:
  1. Man berechnet die Fakultät von 5 (5!) manuell, indem man 54321 ausrechnet. Das Ergebnis ist 120.
  2. Man ruft die Methode berechnen() mit der Zahl 5 als Parameter auf und speichert das Ergebnis in einer Variablen.
  3. Man vergleicht das Ergebnis aus Schritt 1 mit dem Ergebnis aus Schritt 2. Falls beide Werte übereinstimmen, ist der Trockentest erfolgreich und der Algorithmus liefert das korrekte Ergebnis für die Zahl 5.
  4. Man wiederholt die Schritte 1-3 für weitere Zahlen, um sicherzustellen, dass der Algorithmus für verschiedene Eingaben das korrekte Ergebnis liefert.
So könnte man zum Beispiel die Fakultäten von 6, 7 und 8 manuell berechnen und dann den Algorithmus mit diesen Zahlen testen, um sicherzustellen, dass der Algorithmus für verschiedene Eingaben das korrekte Ergebnis liefert.

Zu Ihrem letzten Satz: Der letzte Durchlauf der Schleife ist tatsächlich der Wert von i mal resultat, wobei resultat das Ergebnis aller vorherigen Durchläufe enthält. Beim letzten Durchlauf der Schleife ist i also gleich der übergebenen Zahl. Beispielsweise bei zahl=4 würde der letzte Durchlauf der Schleife mit i=4 ausgeführt werden und resultat wäre dann bereits 24, da resultat in den vorherigen Durchläufen mit i=1, i=2 und i=3 multipliziert wurde. Das Ergebnis der letzten Iteration ist also 24*4=96, das jedoch nicht zurückgegeben wird, da die Schleife bereits beendet ist und resultat bereits das korrekte Ergebnis enthält.

So in etwa....
 
Zuletzt bearbeitet:
Der gegebene Algorithmus berechnet das Fakultätsergebnis der übergebenen Zahl. Die Fakultät einer Zahl ist das Produkt aller positive ganzen Zahlen bis zu dieser Zahl. Beispielsweise ist die Fakultät von 4 (4!) gleich 432*1 = 24.

Der mathematische Zusammenhang für die Fakultät einer Zahl n ist: n! = n * (n-1) * (n-2) * ... * 2 * 1.

In dem gegebenen Algorithmus wird dieser Zusammenhang durch den for-Schleifenkörper umgesetzt, indem das Ergebnis (resultat) mit jeder Iteration um den Faktor i multipliziert wird, wobei i von 1 bis zahl läuft.

Der Rückgabewert der Methode berechnen() für zahl=4 ist 24 und für zahl=7 ist der Rückgabewert 5040.

Der Trockentest ist ein Test, bei dem ein Algorithmus ohne Eingabe von realen Daten getestet wird. In diesem Fall könnte man den gegebenen Algorithmus zum Beispiel durch manuelles Berechnen der Fakultäten für verschiedene Zahlen testen, um zu überprüfen, ob der Algorithmus das korrekte Ergebnis liefert.

Ein Beispiel für einen Trockentest des gegebenen Algorithmus zur Berechnung der Fakultät einer Zahl könnte folgendermaßen aussehen:

  1. Man berechnet die Fakultät von 5 (5!) manuell, indem man 54321 ausrechnet. Das Ergebnis ist 120.
  2. Man ruft die Methode berechnen() mit der Zahl 5 als Parameter auf und speichert das Ergebnis in einer Variablen.
  3. Man vergleicht das Ergebnis aus Schritt 1 mit dem Ergebnis aus Schritt 2. Falls beide Werte übereinstimmen, ist der Trockentest erfolgreich und der Algorithmus liefert das korrekte Ergebnis für die Zahl 5.
  4. Man wiederholt die Schritte 1-3 für weitere Zahlen, um sicherzustellen, dass der Algorithmus für verschiedene Eingaben das korrekte Ergebnis liefert.
So könnte man zum Beispiel die Fakultäten von 6, 7 und 8 manuell berechnen und dann den Algorithmus mit diesen Zahlen testen, um sicherzustellen, dass der Algorithmus für verschiedene Eingaben das korrekte Ergebnis liefert.

Zu Ihrem letzten Satz: Der letzte Durchlauf der Schleife ist tatsächlich der Wert von i mal resultat, wobei resultat das Ergebnis aller vorherigen Durchläufe enthält. Beim letzten Durchlauf der Schleife ist i also gleich der übergebenen Zahl. Beispielsweise bei zahl=4 würde der letzte Durchlauf der Schleife mit i=4 ausgeführt werden und resultat wäre dann bereits 24, da resultat in den vorherigen Durchläufen mit i=1, i=2 und i=3 multipliziert wurde. Das Ergebnis der letzten Iteration ist also 24*4=96, das jedoch nicht zurückgegeben wird, da die Schleife bereits beendet ist und resultat bereits das korrekte Ergebnis enthält.

So in etwa....
Vielen vielen Dank. Es ist mir ein Rätsel wie sie in 5 Minuten so eine ausführliche und hilfreiche Antwort formulieren konnten aber es hat auf jeden Fall geholfen. Mein Fehler lag also in der Annahme, dass resultat immer 1 bleibt was aber natürlich nicht stimmt. Einen schönen Abend wünsche ich!
 

osion

Bekanntes Mitglied
Vielen vielen Dank. Es ist mir ein Rätsel wie sie in 5 Minuten so eine ausführliche und hilfreiche Antwort formulieren konnten aber es hat auf jeden Fall geholfen. Mein Fehler lag also in der Annahme, dass resultat immer 1 bleibt was aber natürlich nicht stimmt. Einen schönen Abend wünsche ich!
wenn man eigentlich der Vorlesung folgen müsste....aber im Java-Forum abhängt.
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
K Algorithmus entwickeln Java Basics - Anfänger-Themen 1
laxla123 Eigenschaften eines Algorithmus (determiniert vs.. deterministisch) Java Basics - Anfänger-Themen 2
C Gewinnspiel erstellen mit Algorithmus Java Basics - Anfänger-Themen 3
C negamax-Algorithmus für Tic-Tac-Toe spielt manchmal falsch Java Basics - Anfänger-Themen 10
H Minimax Algorithmus in Tic Tac Toe Java Basics - Anfänger-Themen 3
M Minimax-Algorithmus für Vier gewinnt Java Basics - Anfänger-Themen 11
M Minimax-Algorithmus Java Basics - Anfänger-Themen 17
mervanpolat Binary Search Algorithmus ausführen Java Basics - Anfänger-Themen 1
J Rekursiver Algorithmus Java Basics - Anfänger-Themen 9
M monte carlo Algorithmus für 4 gewinnt Java Basics - Anfänger-Themen 12
izoards Sortier Algorithmus für Bounding Box Elememte Links nach Rechts und von Oben nach Unten Java Basics - Anfänger-Themen 33
S Algorithmus entwicklen, der zu einem gegebenen Datum die Jahreszeit ermittelt Java Basics - Anfänger-Themen 13
rosima26 Merge-Algorithmus Java Basics - Anfänger-Themen 53
C Ein Algorithmus soll schneller werden Java Basics - Anfänger-Themen 24
D Dijkstra Algorithmus Hilfe!! Java Basics - Anfänger-Themen 9
U Den Kuchen aufteilen - aber wie? (Rebalancing-Algorithmus) Java Basics - Anfänger-Themen 14
s_1895 Pseudocode Naiver Algorithmus Java Basics - Anfänger-Themen 17
H String verschlüsseln - eigener Algorithmus Java Basics - Anfänger-Themen 104
T Algorithmus für Index mit min-Wert Java Basics - Anfänger-Themen 2
Düsseldorf2002 Testen meines Algorithmus Java Basics - Anfänger-Themen 1
D Primzahlen Rechner nach Eratostenes von Kyrene Algorithmus Java Basics - Anfänger-Themen 2
KogoroMori21 Frage zum Euklidischen Algorithmus Java Basics - Anfänger-Themen 11
S Algorithmus java searchAll IKey Java Basics - Anfänger-Themen 4
S Algorithmus Datensätze einfügen wenn... Java Basics - Anfänger-Themen 26
KogoroMori21 MergeSort Algorithmus Java Basics - Anfänger-Themen 2
KogoroMori21 Textdatei einlesen im Array (Selection Sort Algorithmus) Java Basics - Anfänger-Themen 3
fendix Compiler-Fehler Algorithmus zur Bestimmung von Primzahlen Java Basics - Anfänger-Themen 7
S Algorithmus (reelle Zahl <65536 von dezimal zu dual) max. 10 Nachkommastellen Java Basics - Anfänger-Themen 4
G Algorithmus Graphen Java Basics - Anfänger-Themen 10
D Input/Output fehlerhafter Algorithmus zum Ersetzen von Array-Werten nach logischem Schema Java Basics - Anfänger-Themen 1
N Selection Algorithmus: Methode wird nicht erkannt (BlueJ) Java Basics - Anfänger-Themen 3
U Meinung zum Dijkstra Algorithmus Java Basics - Anfänger-Themen 6
U Dijkstra Algorithmus Laufzeit Java Basics - Anfänger-Themen 3
L Math.exp also eigenen Algorithmus Java Basics - Anfänger-Themen 2
Kirby.exe Algorithmus entwickeln Java Basics - Anfänger-Themen 37
M Algorithmus Max-Heap? Java Basics - Anfänger-Themen 3
I Labyrinth auf der Basis eines rekursiven Algorithmus Java Basics - Anfänger-Themen 27
CptK Best Practice Algorithmus nach jedem Schritt zum Visualisieren pausieren Java Basics - Anfänger-Themen 3
A Algorithmus effizienter machen Java Basics - Anfänger-Themen 1
V Algorithmus zur fortlaufenden Berechnung des duechscjnt Java Basics - Anfänger-Themen 1
M Dijkstra Algorithmus in Graphen auf mehrere verschiedene Knoten anwenden lassen Java Basics - Anfänger-Themen 11
O Labyrinth Algorithmus Java Basics - Anfänger-Themen 3
G Quicksort Algorithmus Java Basics - Anfänger-Themen 12
S Binäre-Suche Algorithmus Java Basics - Anfänger-Themen 1
D Algorithmus in Pseudocode mit log2(n) Operationen erstellen Java Basics - Anfänger-Themen 3
C Laufzeit eines Sortier-Algorithmus ermitteln Java Basics - Anfänger-Themen 4
H aufgabe java luhn algorithmus Java Basics - Anfänger-Themen 10
A Datenstruktur für Savings Algorithmus und Planung von kleinen Programmierprojekten Java Basics - Anfänger-Themen 1
J Algorithmus für eine Reihe implementieren Java Basics - Anfänger-Themen 2
S Dijkstra Algorithmus funktioniert nicht Java Basics - Anfänger-Themen 4
N Denksportaufgabe durch Algorithmus lösen Java Basics - Anfänger-Themen 2
S Problem mit einem rekursivem FloodFill Algorithmus Java Basics - Anfänger-Themen 62
B Algorithmus Square und Multiply Java Basics - Anfänger-Themen 3
J Algorithmus - Strings auf eigene Reihenfolge miteinander vergleichen Java Basics - Anfänger-Themen 4
D Frage Boyer-Moore Algorithmus Java Basics - Anfänger-Themen 7
M Komplexität Algorithmus Java Basics - Anfänger-Themen 8
H Zeichen im algorithmus Java Basics - Anfänger-Themen 4
B Code Verständnisfragen - FLoyd Warshall Algorithmus Java Basics - Anfänger-Themen 1
B Algorithmus zum entmischen einer Zahlenfolge Java Basics - Anfänger-Themen 15
X Minimax-Algorithmus über alle Kanten möglich? - Kanten darstellen Java Basics - Anfänger-Themen 1
T Algorithmus zur Überprüfung eines binären Suchbaums Java Basics - Anfänger-Themen 2
K Best Practice Algorithmus für Berechnung von Zahlenreihenfolge Java Basics - Anfänger-Themen 12
M Simpler Algorithmus läuft extrem langsam. Java Basics - Anfänger-Themen 3
K Erste Schritte Brute Force Algorithmus Java Basics - Anfänger-Themen 2
L Frage zu BubbleSort Algorithmus Java Basics - Anfänger-Themen 2
B gibt es ein Stundenplan-Algorithmus? Java Basics - Anfänger-Themen 11
O Algorithmus-Problem Java Basics - Anfänger-Themen 5
P Euklidischer Algorithmus Java Basics - Anfänger-Themen 9
L Greates Commong Dividend - euklidischer Algorithmus, modulos not positive Java Basics - Anfänger-Themen 5
J Euklidischer Algorithmus Java Basics - Anfänger-Themen 1
S Quicksort Algorithmus Java Basics - Anfänger-Themen 2
S GraphNode --- Dijkstra Algorithmus : NullPointerException Java Basics - Anfänger-Themen 1
B Rekursive Algorithmus schreiben Java Basics - Anfänger-Themen 8
V Algorithmus in einer Methode ausführen Java Basics - Anfänger-Themen 3
M Implementierung des Knuth-Morris-Pratt-Algorithmus Java Basics - Anfänger-Themen 0
M Dijkstras Algorithmus Java Basics - Anfänger-Themen 5
S Zusammenhang Datenstruktur/Algorithmus Java Basics - Anfänger-Themen 1
M Simulation - Algorithmus Java Basics - Anfänger-Themen 3
F Erste Schritte Hilfe beim Algorithmus finden Java Basics - Anfänger-Themen 8
D Algorithmus für Punkte auf einem Kreis Java Basics - Anfänger-Themen 0
D Algorithmus zu gegebener Laufzeit implementieren Java Basics - Anfänger-Themen 1
B Doppelte Werte aus Array entfernen ohne Import - Algorithmus Java Basics - Anfänger-Themen 5
C Ideen für einen Algorithmus Java Basics - Anfänger-Themen 1
F Best Practice Algorithmus optimieren - Binaeruhr Java Basics - Anfänger-Themen 2
S Euklid Algorithmus zur Berechnung des GGTs Java Basics - Anfänger-Themen 2
L Welcher Algorithmus ist das ? Java Basics - Anfänger-Themen 9
J Rekursiver Horner-Schema-Algorithmus - Verstehe ich ihn richtig? Java Basics - Anfänger-Themen 2
O Java Zufalls-Verteil-Algorithmus Java Basics - Anfänger-Themen 3
P ganz simpler algorithmus Java Basics - Anfänger-Themen 3
C Sortieren ohne Algorithmus Java Basics - Anfänger-Themen 8
J Algorithmus: Grad von floating zu Grad/Minute/Sekunde Java Basics - Anfänger-Themen 3
A Text Verschriebung/Algorithmus(?) Java Basics - Anfänger-Themen 8
R Rekursionsformel für Laufzeit von Algorithmus Java Basics - Anfänger-Themen 3
E Algorithmus für kart. Produkt: als int [] Feld repräsentiert Java Basics - Anfänger-Themen 10
U Peterson Algorithmus Java Basics - Anfänger-Themen 13
algebraiker Collections Bräuchte Hilfe bei dem Algorithmus - LinkedHashMap Java Basics - Anfänger-Themen 2
S A* Path Algorithmus in Java schon vorhanden Java Basics - Anfänger-Themen 3
S Bubble Sort Algorithmus Java Basics - Anfänger-Themen 3
N Unerklärlich: Rekursiver Algorithmus gibt falschen Datentyp zurück... Java Basics - Anfänger-Themen 4
S Algorithmus (Programmablaufplan) Java Basics - Anfänger-Themen 11

Ähnliche Java Themen

Neue Themen


Oben