PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Rekursion



sobermoeller
21-02-2005, 16:46
Hallo,
kann mir jemannd bei folgendem Problem helfen:
Ich muss die Tiefe eines Schachtes an der Falldauer eines Steines berechnen.
Die Berechnung soll mittels einer Rekursion erfolgen.
Ich habe im Augenblick übehaupt keinen Plan wie ich dieses Problem lösen kann :mad: . Danke für Eure Hilfe !!!

BeS
21-02-2005, 18:43
Ich verstehe die Aufgabe nicht ganz. Soll man annehmen 1-Falldauer-Einheit = 1-Längeneinheit? Oder gibt es da eine genauere Angabe.
Und welche Sprache sollt ihr verwenden?

Also in scheme (immer gut bei rekursionen ;) ) könnte es so aussehen:



(define (tiefe falldauer)
(cond ((= falldauer 0) 0)
(#t (+ 1 (tiefe (- falldauer 1))))))


Jetzt ist das Verhältnis Falldauer:Tiefe halt 1:1. Wenn du da eine genauere Berechnung brauchst, dann muß man das halt anpassen.

sobermoeller
21-02-2005, 19:05
Hallo,
hier mein Problem noch einmal genauer:

Berechnung der Tiefe eines Schachtes an Hand der Falldauer eines Steines.

Erdbeschleunigung = 9,81 m/sec²
Schall = 330 m/s

Die Tiefe soll berechnet werden an Hand der Dauer vom loslassen des Steines bis zum Eintreffen des Schalles.

Das ganze soll in C geschrieben werden.

Ich hoffe ich habe mich verständlich ausgedrückt !!

Danke für Eure Hilfe !!!! :)

Joghurt
22-02-2005, 00:22
Soll die Hausaufgabe demonstrieren, bei welchen Problemen man nicht auf Rekursion zurückgreifen sollte?
Hierbei eine Rekursion zu nehmen ist ziemlich bescheuert!
Wenn wir schon deine Hausaufgaben lösen sollen, dann solltest du auch die ganze Aufgabe nennen.

BTW, Hausaufgaben sollen dir helfen, programmieren zu lernen. Wenn du dir die Lösung vorkauen lässt, bringt dir das ganze am Ende überhaupt nichts. Du hast nur deine Zeit verschwendet.

Edit: Der einzige Teil, wo man meiner Meinung nach entfernt an rekursion denken kann, ist die berechnung der Geschwindigkeit aufgrund der Erdanziehungskraft:
double vg(int sek)
{
if (sek == 0) {
return 0.;
}
return 9.81+vg(sek-1);
}Ist aber dennoch hirnrissig, da man so nur ganzzahlige Sekunden nehmen kann. Und ein 9.81*sek ist nun wirklich viel einfacher...

(Edit: natürlich nur 9.81*sek, nicht sek^2)

sobermoeller
22-02-2005, 08:16
Soll die Hausaufgabe demonstrieren, bei welchen Problemen man nicht auf Rekursion zurückgreifen sollte?
Hierbei eine Rekursion zu nehmen ist ziemlich bescheuert!
Genau das war mein Problem das ich es ziemlich bescheuert finde hier eine Rekursion zu nehmen, da sie mir zu ungenau ist. Ich wollte nur sehen ob ich zu bescheuert bin eine Rekursion zu schreiben oder ob bei dem Problem eine Lösung per Rekursion einfach nur schlecht möglich ist.

Wenn wir schon deine Hausaufgaben lösen sollen, dann solltest du auch die ganze Aufgabe nennen.
Wer sagt das du meine Aufgabe lösen sollst ? Es war nur die Frage ob sich so etwas ueber eine Rekursion vernünftig lösen lässt.

BTW, Hausaufgaben sollen dir helfen, programmieren zu lernen. Wenn du dir die Lösung vorkauen lässt, bringt dir das ganze am Ende überhaupt nichts. Du hast nur deine Zeit verschwendet.
Da gebe ich dir Recht, aber wie bereits gesagt es soll mir keiner ein Lösung vorkauen, aber in einem Forum sollte schon platz sein um über Probleme zu diskutieren. Das hat nichts mit Lösung vorkauen oder Aufgaben schreiben zu tun. Eine Antwort wie z.B.: Dieses Problem über eine Rekursion zu lösen ist schwierig da es zu ungenau ist hätte doch gereicht um mich darin zu bestätigen das ich nicht zu "blöd" bin eine Lösung zu finden. Es wollen nicht alle immer nur eine fertige Lösung haben !

Edit: Der einzige Teil, wo man meiner Meinung nach entfernt an Rekursion denken kann, ist die Berechnung der Geschwindigkeit aufgrund der Erdanziehungskraft:
double vg(int sek)
{
if (sek == 0) {
return 0.;
}
return 9.81+vg(sek-1);
}Ist aber dennoch hirnrissig, da man so nur ganzzahlige Sekunden nehmen kann.
Und ein 9.81*sek*sek ist nun wirklich viel einfacher...
Genau es ist einfach aber hast du mal geschaut wie ungenau das ganze wird !

Guß stefan

Joghurt
22-02-2005, 13:21
Ich wollte nur sehen ob ich zu bescheuert bin eine Rekursion zu schreiben oder ob bei dem Problem eine Lösung per Rekursion einfach nur schlecht möglich ist.
Wer sagt das du meine Aufgabe lösen sollst ? Es war nur die Frage ob sich so etwas ueber eine Rekursion vernünftig lösen lässt.Das Problem war, dass du nur geschrieben hast, was du für ein Problem hast, aber nicht, wobei wir dir jetzt genau helfen sollen.


Da gebe ich dir Recht, aber wie bereits gesagt es soll mir keiner ein Lösung vorkauen, aber in einem Forum sollte schon platz sein um über Probleme zu diskutieren. Das hat nichts mit Lösung vorkauen oder Aufgaben schreiben zu tun. Eine Antwort wie z.B.: Dieses Problem über eine Rekursion zu lösen ist schwierig da es zu ungenau ist hätte doch gereicht um mich darin zu bestätigen das ich nicht zu "blöd" bin eine Lösung zu finden. Es wollen nicht alle immer nur eine fertige Lösung haben !Ich habe ja auch keine fertige Lösung gepostet. Abgesehen davon, habe ich dich einfach falsch verstanden. Kann ja mal passieren.


Genau es ist einfach aber hast du mal geschaut wie ungenau das ganze wird !Ja, der Fehler beträgt bei nicht-ganzzahlen "höchstens" 9.81 :D
Den Fehler kann man natürlich eliminieren, indem man bei der Rekursion
if (sek<1.) { return 9.81*sek;} schreibt, aber das ist dann ja komplett hirnrissig.

Wenn dir die "Lösung" mitgeteilt wird, poste sich doch mal bitte hier. Würde mich mal interessieren, was das ganze soll.

Edit: War schon spät gestern. v_g ist natürlich 9.81 * t, nicht *t^2 :cool: