Das ist nicht direkt möglich weil die Vorgaben nur einmal berechnet werden und zwar wenn das ``def`` ausgeführt wird und nicht jedesmal beim Aufruf.
Üblicherweise nimmt man für solche Fälle einen Platzhalter und testet auf den in der Funktion:
Code: Alles auswählen
def palidrom_rekursiv(wort, anfang=0, ende=None):
if ende is None:
ende = len(wort) - 1
if anfang >= ende:
return True
if wort[anfang] == wort[ende]:
return palidrom_rekursiv(wort, anfang + 1, ende - 1)
else:
return False
Diese rekursive Funktion ist aber nicht so gut was die Laufzeit und den Speicherverbrauch angeht. Ausserdem ist bei CPython die Rekursionstiefe künstlich beschränkt.
Eine nicht-rekursive Lösung könnte zum Beispiel so aussehen:
Code: Alles auswählen
def is_palindrome(sequence):
length = len(sequence)
midpoint = length // 2
correction = (length & 1) - 1
return sequence[:midpoint] == sequence[-1:midpoint+correction:-1]