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)¶
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.