Es pot demostrar que la recurrència , amb i és tal que per a tot , .
L’estudiant que no ho sap, però vol conèixer el valor d’ per a qualsevol , podria ser tan ingenu d’implementar la següent funció d’una manera molt ineficient, fent servir la definició matemàtica:
(defn recurrencia [n]
(cond
(or (= n 0) (= n 1)) n
:else (let [rm1 (recurrencia (dec n))
rm2 (recurrencia (dec (dec n)))]
(-' (*' 5 rm1) (*' 6 rm2)))))
Passeu aquesta funció a continuation passing style per
obtenir-ne la versió recursiva final. Anomeneu-la
recurrencia-cps.
Després, trampolinitzeu recurrencia-cps per
evitar d’obtenir l’error de Stack Overflow. Anomeneu-la
recurrencia-t.
Cal que envieu un fitxer amb la definició de les
dues funcions recurrencia-cps i
recurrencia-t.
Input
(recurrencia-cps 5 identity) (recurrencia-cps 10 identity) (recurrencia-cps 15 identity) (recurrencia-t 5) (recurrencia-t 10) (recurrencia-t 15) (recurrencia-t 20)
Output
211 58025 14316139 211 58025 14316139 3485735825