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