Recursivitat

Vegeu els conceptes, les referències i els exercicis al tema Recursivitat dins del material de l’assignatura.

Tipus de problemes

Fòrmules recursives

  • Definir una funció en Python a partir d’una fòrmula matemàtica recursiva: funció, eqüació, successió, sèrie…

  • Només cal fer un canvi de llenguatge: de notació matemàtica a Python.

Exemples

Algorismes recursius

  • Definir una funció en Python a partir d’un algorisme recursiu.

  • Cal saber expressar l’algorisme en Python.

Exemples

Seqüències

  • L’estratègia més sencilla per reduir una seqüència és calcular-ne una llesca sense un dels elements.

  • Els elements més fàcils de descartar són el primer i l’últim.

Exemples

Immersió

  • Tècnica de disseny recursiu.

  • Imprescindible quan no sabem reduir cap dels paràmetres de la funció original.

  • Consisteix en definir una nova funció més general (funció immersora), que té més paràmetres.

  • La funció immersora calcula el mateix resultat que la funció original quan es crida amb alguns valors dels arguments que es corresponen als nous paràmetres.

Immersió d’eficiència en seqüències

  • Evita generar llesques de la llista original.

  • Afegeix un paràmetre de tipus range.

  • Les llesques es fan sobre el nou paràmetre en comptes de la llista.

Vegeu al Python Tutor la solució de l’esquema sintetitza basada en llesques i contrasteu-la amb la solució amb la tècnica d’immersió.

Exemples

Dades recursives

Exemples

Funcions modificadores

  • També poden ser recursives.

  • Cal immersió per les funcions modificadores sobre seqüències.

Exemples

  • Funció positius_2()

  • Recorregut en profunditat d’una graf

Iteradors

  • Les funcions que reben o calculen iteradors finits poden ser recursives.

Tipus de recursivitat

Recursivitat multiple

  • Funció recursiva lineal o simple: per resoldre el cas recursiu, només cal que es cridi un cop a ella mateixa.

  • Funció recursiva múltiple: per resoldre el cas recursiu, cal cridar-la més d’un cop.

Exemples

Recursivitat final

  • Funció recursiva lineal final: retorna directament el resultat de la crida recursiva.

Exemples

negatiu, divina, red_dif,

negatiu, divina, red_dif,

Recursivitat estructural

Recursivitat indirecta

  • Funció recursiva directa: la funció es crida a ella mateixa.

  • Funció recursiva indirecta: la funció no es crida a ella mateixa sinó que ho fa una altra funció a qui ha cridat.