Witam,
próbuję zrobić zadanie o treści:

Napisz funkcję, która zlicza ilość wystąpień liczb podzielnych przez pięć na podanej liście.

I próbuję zrobić go rekurencyjnie na zasadzie (i - zmienna do zliczania):

  1. Sprawdzamy czy lista jest pusta.
    Jeżeli tak to kończymy działanie programu i wypisujemy i.
    Jeżeli nie to przechodzimy dalej.
  2. Dzielimy listę na głowę i ogon.
  3. Sprawdzamy czy głowa jest podzielna przez 5.
    Jeżeli tak to inkrementujemy zmienną (powiedzmy i) i
    Jeżeli nie to przechodzimy dalej.
  4. Wywołujemy od nową funkcję, tym razem z samym ogonem.

W teorii wszystko pięknie, ale nie bardzo wiem jak to teraz zrobić w Lispie.
Mam coś takiego:

(defun zliczanie (x)
(setq i 0)
(if (null x) i (if (= (mod (car x) 5) 0) (incf i)) (zliczanie (cdr x))))

I wszystko pewnie byłoby ok, gdyby nie to nieszczęsne

(setq i)

Nie wiem jak inaczej wprowadzić tą zmienną w Lispie, aby nie wykonywała się przy każdym wywołaniu funkcji. Próbowałem czegoś takiego:

(if (null i) (setq i 0))

No ale niestety nie pomogło.
Mógłby mi ktoś poradzić coś na temat? Nie mogę wpaść na pomysł jak to zrobić inaczej.