Aplica¶
Dissenya la versió recursiva de l’esquema de recorregut aplica.
Desa al mòdul esquemes la funció recursiva següent:
- esquemes.aplica(funcio, seq)¶
Aplica la funció funcio a cada un dels elements de la seqüència seq
- Paràmetres:
funcio – funció amb un paràmetre.
seq – seqüència.
- Tipus de retorn:
- Retorna:
[funcio(seq[0]), funcio(seq[1])..., funcio(seq[-1])]
Per exemple:
>>> s = [2, -1, -5, 7, -25] >>> aplica(abs, s) [2, 1, 5, 7, 25] >>> aplica(lambda x: x**2, s) [4, 1, 25, 49, 625] >>> aplica(lambda x: x/2, s) [1.0, -0.5, -2.5, 3.5, -12.5]
Disposes de més jocs de proves al fitxer
test-aplica.txt i d’una solució al fitxer
esquemes.py.
Solucions¶
Recursiva lineal¶
def aplica_1(funcio, seq):
if len(seq) == 0:
r = []
else:
r = aplica_1(funcio, seq[1:])
r.insert(0, funcio(seq[0]))
return r
Recursiva lineal amb immersió d’eficiència¶
def aplica_2(funcio, seq):
return aplica_2_i(funcio, seq, range(len(seq)))
def aplica_2_i(funcio, seq, llesca):
if len(llesca) == 0:
r = []
else:
r = aplica_2_i(funcio, seq, llesca[1:])
r.insert(0, funcio(seq[llesca[0]]))
return r