Resposta ao exercício 63

Para implementar a sucessão de Fibonacci, é conveniente usar a versão iterativa da função de Fibonacci, para se poder determinar mais rapidamente o próximo elemento da sequência em função dos dois últimos que o precederam. Assim sendo, a função necessita de duas variáveis no seu estado local, para guardar o último e o penúltimo valores produzidos.

(let ((ultimo 1) (penultimo 0))
  (defun gera-fib ()
    (let ((novo (+ ultimo penultimo)))
      (setq penultimo ultimo
            ultimo novo)
      novo)))

> (gera-fib) 1 > (gera-fib) 2 > (gera-fib) 3