Sintetitza¶
Dissenya la versió recursiva de l’esquema de recorregut sintetitza.
Desa al mòdul iesquemes la funció recursiva següent:
- iesquemes.isintetitza(acumula, it, neutre)¶
Aplica la funció acumula als elements de l’iterador it començant per neutre i el d’índex 0
- Paràmetres:
acumula – funció amb dos paràmetres.
seq – iterador amb els elements a acumular.
neutre – element neutre de l’operació acumula.
- Retorna:
acumula(...acumula(acumula(neutre, it[0]), it[1])..., it[-1])
Per exemple:
>>> s = [8, 3, 5, 2] >>> isintetitza(operator.add, iter(s), 0) 18 >>> isintetitza(max, iter(s), s[0]) 8 >>> isintetitza(operator.mul, iter(s), 1) 240
Disposes de més jocs de proves al fitxer
test-isintetitza.txt i d’una solució al fitxer
iesquemes.py.
Solució recursiva final¶
def isintetitza(acumula, it, valor):
e = next(it, None)
if not e:
r = valor
else:
r = isintetitza(acumula, it, acumula(valor, e))
return r