Sysop: | Amessyroom |
---|---|
Location: | Fayetteville, NC |
Users: | 27 |
Nodes: | 6 (0 / 6) |
Uptime: | 41:22:08 |
Calls: | 631 |
Calls today: | 2 |
Files: | 1,187 |
D/L today: |
24 files (29,813K bytes) |
Messages: | 174,725 |
(defun factorial (n)
(loop with result = 1
for i from 1 to n do
(setf result (* result i))
finally (return result)))
If you use loop, it's better to start multiplying the biggest integers
first, in case it goes into bignums:
cl-user> (defun factorial> (n)
(loop with result = 1
for i from 1 to n do
(setf result (* result i))
finally (return result)))
factorial>
cl-user> (defun factorial< (n)
(loop with result = 1
for i from n downto 1 do
(setf result (* result i))
finally (return result)))