Iterativ processlösning i Lisp

Trädvy Permalänk
Medlem
Plats
Norrköping
Registrerad
Dec 2004

Iterativ processlösning i Lisp

Hej. Jag behöver hjälp med att förstå den iterativa processlösningen i Lisp. Jag har förstått den rekursiva men jag kan riktigt inte förstå den iterativa.

Vi kan ta fakultetsfunktionen som exempel.

(defun fak (n) (fak-iter n 1 ))

(defun fak-iter ( n result )
(if (= n 0) result (fak-iter ( - n 1 ) ( * n result ) ))

I den första funktionen är fak-iter ett argument, medans den senare defineras som en funktion med argumenten n och result.

Skulle någon kunna förklara den iterativ processlösningen med ? Skulle vara riktigt tacksam.

Corsair 600W Gaming Edition | Intel Core i5 4670K | 8GB DDR3 RAM | Corsair Carbide 330R | Sapphire Radeon R9 290 | Arctic Accelero Xtreme 3

Trädvy Permalänk
Medlem
Plats
Stockholm
Registrerad
Nov 2001

I den första är den inte ett argument, den evalueras med argumenten n och 1.

void@qnet
teeworlds, stålverk80, evil schemer, c, c++
Languages shape the way we think, or don't.

Trädvy Permalänk
Medlem
Plats
Norrköping
Registrerad
Dec 2004
Citat:

Ursprungligen inskrivet av jdv
I den första är den inte ett argument, den evalueras med argumenten n och 1.

Tackar. Har förstått det nu. Vet inte hur jag kunde missa att (fak-iter n 1 ) är ett anrop till underfunktionen fak-iter med argumenten n och 2 .

Corsair 600W Gaming Edition | Intel Core i5 4670K | 8GB DDR3 RAM | Corsair Carbide 330R | Sapphire Radeon R9 290 | Arctic Accelero Xtreme 3