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.

  • Esquemes recursius sobre seqüències.

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

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

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

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

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

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.

Esquemes recursius sobre seqüències

Esquemes recursius sobre iteradors