Registrierung Kalender Mitgliederliste Teammitglieder Suche Häufig gestellte Fragen Zur Startseite

Informatiker Board » Themengebiete » Praktische Informatik » Algorithmen » Rekursiv Minimum in einer Queue » Antwort erstellen » Hallo Gast [Anmelden|Registrieren]

Antwort erstellen
Benutzername: (du bist nicht eingeloggt!)
Thema:
Nachricht:

HTML ist nicht erlaubt
BBCode ist erlaubt
Smilies sind erlaubt
Bilder sind erlaubt

Smilies: 21 von 33
smileWinkDaumen hoch
verwirrtAugenzwinkerngeschockt
Mit ZungeGottunglücklich
Forum Kloppebösegroßes Grinsen
TanzentraurigProst
TeufelSpamWillkommen
LehrerLOL HammerZunge raus
Hilfe 
aktuellen Tag schließen
alle Tags schließen
fettgedruckter Textkursiver Textunterstrichener Text zentrierter Text Hyperlink einfügenE-Mail-Adresse einfügenBild einfügen Zitat einfügenListe erstellen CODE einfügenPHP CODE farbig hervorheben
Spamschutz:
Text aus Bild eingeben
Spamschutz

Die letzten 6 Beiträge
eulerscheZahl

Da, dann gibst du einfach das Minimum (also bei unsigned: 0) zurück.
Chirs

Ja du hast recht das andere funktioniert nur wenn ich head() mit einem zu suchenden Element vergleichen kann smile


Aber was ich noch nicht ganz verstehe ist wenn ich jetzt diese Funktion in findMax ändern möchte dann muss ich nur die Zeile return -1 ändern oder ?


Grüße
eulerscheZahl

Aber head(q) ist nur ein Wert von vielen. Woher nimmst du die Gewissheit, dass gerade dort das Minimum steht und nicht in den Werten danach? Den Rest werte ich per rekursivem Aufruf aus, um ihn dann mit head(q) zu vergleichen. Irgendwo musst du da das Minimum aus beidem berechnen.
Chirs

Dankeschön für die schnelle Antwort und für die Hilfe. Daumen hoch

Leider möchte ich jedoch das gefundene Minimum ausgeben.
Also im return möchte ich gern head(q) stehen haben wenn es das Minimum ist smile

Trotzdem vielen Dank für den Denkanstoß smile
eulerscheZahl

Du musst immer ein int zurückgeben, das tust du bei emptyqueue() nicht.

code:
1:
2:
3:
4:
5:
6:
unsigned int findMin(queue* q) {
	if (head(q) == NULL) return -1;
	unsigned int current = head(q);
	unsigned int restMin = findMin(rest(q));
	return min(current, restMin);
}

Der Code wird ziemlich sicher nicht compilierbar sein, sollte dir aber trotzdem einen Absatz geben, wie du die Aufgabe lösen kannst: Berechne das Minimum des Rests und vergleiche mit dem aktuellen Wert.
Wenn es keinen Rest mehr gibt, wird der größte mögliche Wert zurückgegeben. (-1 als unsigned gibt einen Überlauf, weshalb -1 der größtmögliche Wert ist).
Chirs Rekursiv Minimum in einer Queue

Meine Frage:
Hallo,

ich hätte nochmal eine Frage bzgl. Queue und zwar möchte ich gerne eine Funktion schreiben, die rekursiv das Minimum einer Queue bestimmt.

Ich verwende hierzu bereits Funktionen die wir im Studium definiert haben:

emptyqueue() -> gibt leere Queue zurück
rest() -> Entfernt erstes Element
head() -> gibt erstes Element zurück
append() -> fügt hinten ein Element an


Leider weiß ich nicht wie ich den Vergleich des ersten Elements mit dem Nächsten rekursiv realisieren soll.


Vielleicht kann mir hier jemand weiterhelfen.


Danke schon mal für eure Bemühungen


Grüße

Meine Ideen:
code:
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
unsigned int min(queue *q)
{ if (q == 0)
return emptyqueue();
else if (head(q)== ) ???
return head(q);

else return min(rest(q));