Lisp (programlingvo): Malsamoj inter versioj

[nekontrolita versio][nekontrolita versio]
Enhavo forigita Enhavo aldonita
Loveless (diskuto | kontribuoj)
e roboto modifo de: et:Lisp
Neniu resumo de redakto
Linio 14:
'''Funkcioj''' estas skribataj ankaŭ en formo de listo: <code>(+ 1 2 3)</code>, kie la unua elemento estas nomo de funkcio, kaj la ceteraj estas ties parametroj. Defino de funkcio estas voko de speciala funkcio <code>defun</code> (kiu havas tri argumentojn: nomo de nova funkcio, listo de ĝiaj argumentoj, kaj ĝia korpo). Jen estas defino de [[rekursia funkcio]] [[faktorialo]]:
<source lang=lisp>
(defun faktorialo (n)
(if (<= n 1)
1
(* n (faktorialo (- n 1)))))
;; Aŭ...
)
 
)
(defun faktorialo2 (n &optional (acc 1))
(if (<= n 1)
acc
(faktorialo2 (- n 1)(* acc n))))
</source>
Speciala funkcio "if" havas tri argumentojn, ĝi kalkulas la unuan (kondiĉo), se ties valoro estas vero (io ajn ne egala al <code>nil</code>), tiam la rezulto estas la valoro de la dua argumento, alie la rezulto estas la valoro de la tria.