Játszunk egy kicsit a rekurzióval, ha már úgy is téma volt a funkcionális programozás. (Disclaimer: a thread valószínűleg semmilyen gyakorlati hasznonnal nem szolgál, aki ilyesmi keres az fogja fel logikai rejtvénynek.)
Köztudott, hogy rekurzióval mindent meg lehet oldani, legfeljebb nem lesz hatékony. Nézzünk egy egyszerű példát, fordítsunk meg egy python stringet:
def rev_str(s):
if s == "":
return s
else:
return rev_str(s[1:]) + s[0]
...
>>> s = "abcd"
>>> rev_str(s)
'dcba'
A feladat: az előzőhöz strukturálisan teljesen hasonló függvény definiálása, amely egy listát fordít meg, valahogy így:
def rev_lst(l):
if l == []:
return l
else:
... l[1:] ... l[0] ...
Kérdések:
- mi legyen az utolsó sorban?
- miért nem működik a naív megoldás, miért működik a trükkös?
(Ez utóbbiban én sem vagyok biztos, ezért örülnék minden észrevételnek.)
- 1234 megtekintés
Hozzászólások
-return rev_lst(l[1:])+[l[0]]
-azért mert listákat lehet összefűzni, listát primitív listaelemmel (l[0]) nem
- A hozzászóláshoz be kell jelentkezni