Umkehrung eines Wortes

Wenn du dir nicht sicher bist, in welchem der anderen Foren du die Frage stellen sollst, dann bist du hier im Forum für allgemeine Fragen sicher richtig.
BlackJack

@lucky88: Das ist sicher keine Lösung auf die es Punkte gibt. Die Vorschrift mit dem aufteilen von erstem Buchstaben und Rest des Wortes soll laut Aufgabenstellung ja rekursiv angewandt werden und nicht nur einmal.
lucky88
User
Beiträge: 4
Registriert: Sonntag 5. Juni 2011, 18:45

ach verdammt... das soll mit rekursion sein... argh :cry:
DasIch
User
Beiträge: 2718
Registriert: Montag 19. Mai 2008, 04:21
Wohnort: Berlin

Du kannst einfach die Haskell Lösung zu Python übertragen, so schwer ist dass nicht.
Benutzeravatar
/me
User
Beiträge: 3555
Registriert: Donnerstag 25. Juni 2009, 14:40
Wohnort: Bonn

DasIch hat geschrieben:Du kannst einfach die Haskell Lösung zu Python übertragen, so schwer ist dass nicht.
Wenn man so gar keinen Ansatz hat, dann wirkt auch das schwer.

Ich liefere mal folgenden Ansatz bei dem nur noch die Rekursion ergänzt werden muss.

Code: Alles auswählen

def reverse(val):
    if val:
        return val[1:] + val[:1]
    return val

print reverse('Hallo')
EyDu
User
Beiträge: 4881
Registriert: Donnerstag 20. Juli 2006, 23:06
Wohnort: Berlin

/me hat geschrieben:
sma hat geschrieben:Das Python ein willkürliches Limit der Rekursionstiefe implementiert ändert nichts daran, dass die rekursive Lösung elegant und einfach ist. Außerdem kann man problemlos "hallo" mit 5 Buchstaben umkehren ohne je von diesem Limit zu wissen.
Ja, man kann. Man kann sich durchaus - und das ist jetzt nicht mal abwertend gemeint - von jedem Gedanken an Performance, Speicherverbrauch und Umsetzung innerhalb des Computers verabschieden.
Wenn der Interpreter nicht gut genug ist selbst einfachste Endrekursionen aufzulösen, dann ist das kein Problem von Rekusionen, sondern ein Problem des Interpreters.
Das Leben ist wie ein Tennisball.
Benutzeravatar
snafu
User
Beiträge: 6740
Registriert: Donnerstag 21. Februar 2008, 17:31
Wohnort: Gelsenkirchen

EyDu hat geschrieben:Wenn der Interpreter nicht gut genug ist selbst einfachste Endrekursionen aufzulösen, dann ist das kein Problem von Rekusionen, sondern ein Problem des Interpreters.
Trotzdem wird man sich ja wohl an die Implementierung anpassen müssen, wenn diese nicht für tiefe Rekursion optimiert wurde.

Unabhängig davon will die Aufgabe ja hier offenbar ausdrücklich, dass Rekursion verwendet wird. Von daher erübrigt sich die Frage wohl. Bevor es gar keine Punkte gibt, würde ich eher gemäß Aufgabenstellung arbeiten und evtl anmerken, dass es auch anders ginge.
BlackJack

@EyDu: Nur sind viele Sprachen so ”schlecht” das nicht zu können. Und wenn man die Realität ignoriert und trotzdem das angeblich elegantere bei solchen Sprachen verwendet, sitzt das Problem wieder vor dem Rechner.
Benutzeravatar
pillmuncher
User
Beiträge: 1484
Registriert: Samstag 21. März 2009, 22:59
Wohnort: Pfaffenwinkel

Man kann sich tail calls natürlich auch selber bauen:

Code: Alles auswählen

from the_link_above import bouncy, throw, land, trampoline

@bouncy
def rev(s, acc=''):
    if s:
        return rev(s[:-1], acc + s[-1])
    return throw(land, acc)

s = 'hallo' * 10000
for r in trampoline(rev, s):
    print r
In specifications, Murphy's Law supersedes Ohm's.
Antworten