1. Nombres de Catalan (6 punts)¶
Avís
Per a resoldre aquest exercici no es poden fer servir llistes, tuples, diccionaris ni cap altra estructura de dades per a desar tots els elements d’un iterador.
Es demana que dissenyeu la funció generadora especificada a continuació i la deseu en un fitxer anomenat catalan.py:
- catalan.catalan(n)¶
- Paràmetres:
n (int) – nombre de termes de la seqüència a generar
- Retorna:
iterador que treu la seqüència de nombres enters \(C_0 \, C_1 \, \ldots \, C_i\) definits com:
\[\begin{split}\begin{cases} C_0 &=& 1 \\ C_i &=& \cfrac{2(2i-1)C_{i-1}}{i+1} \; \mbox{ per tot } \; i>0 \end{cases}\end{split}\]
Per exemple:
>>> it = catalan(10)
>>> for i in range(10):
... print(i, ' - ', next(it))
...
0 - 1
1 - 1
2 - 2
3 - 5
4 - 14
5 - 42
6 - 132
7 - 429
8 - 1430
9 - 4862
>>> next(it, 'final')
'final'
Disposeu d’un joc de proves més complet en el fitxer test-catalan.txt