elundril hat folgendes geschrieben : |
Es ist ja schließlich so, dass bei einer Rekursion immer wieder was auf den Stack geworfen wird, bei einer Iteration jedoch nicht. |
Nicht unbedingt. Manche Sprachen (natürlich gerade die funktionalen) können Endrekursion mit
Tail Calls umsetzen, wodurch der Stackverbrauch wie bei der Iteration konstant bleibt. Oder sie setzen intern einfache rekursive Funktionen gleich als Schleifen um.
Wenn die Sprache so etwas bietet, gibt es gerade beim Beispiel der Binären Suche keinen Grund, auf die mathematisch-prägnante Formulierung als Rekursion zu verzichten. Und funktionale Sprachen machen mit Features wie Type Inference und Pattern Matching rekursive Ansätze noch attraktiver. In anderen Sprachen ist es mal wieder das bekannte Abwägen zwischen Eleganz und Performance - und da bitte immer daran denken, was Donald Knuth von Premature Optimization hält

.