2. Recursivitat: Perímetre d’un Polígon (3 punts)

Avís

Per a resoldre aquest exercici no es poden fer servir iteracions (ni for ni while ), només funcions recursives.

Considerem les classes Punt2D (que representa un punt en dues dimensions) i Poligon (que representa polígons de l’espai 2D) que ja coneixeu (vegeu els enunciats Classe Punt2D i Classe Poligon).

Es demana que al mòdul perimetre (fitxer perimetre.py) implementeu la funció recursiva següent que donada una instaǹcia p de la classe Poligon en calcula i retorna el seu perímetre (float).

perimetre.calcul_perimetre(p)
Paràmetres:

p – instaǹcia de la classe Poligon

Retorna:

el perímetre de p (float)

Per exemple:


>>> p = poligon.Poligon()
>>> p.afegir_vertex(punt2D.Punt2D(0, 0))
>>> p.afegir_vertex(punt2D.Punt2D(0, 2))
>>> p.afegir_vertex(punt2D.Punt2D(1, 2))
>>> p.afegir_vertex(punt2D.Punt2D(1, 0))
>>> print('{:.2f}'.format(perimetre.calcul_perimetre(p)))
6.00

Recordeu que el perímetre d’un polígon és la suma de les longituds de totes les seves arestes, incloent-hi la que va del darrer punt al primer, i que la longitud d’una aresta es pot calcular com la distància entre els dos vèrtexs de l’aresta.

Disposeu dels jocs de proves al fitxer test-perimetre.txt i de les classes esmentades als fitxers punt2D.py i poligon.py.