Fibonacci sequence: Difference between revisions

Content added Content deleted
(Fibonacci sequence en Yabasic)
m (Emacs Lisp: Improve formatting)
Line 4,045: Line 4,045:


=={{header|Emacs Lisp}}==
=={{header|Emacs Lisp}}==

===version 1===
===version 1===
<lang Emacs Lisp>
(defun fib (n a b c)
(if (< c n) (fib n b (+ a b) (+ 1 c) )
(if (= c n) b a) ))


(defun fibonacci (n) (if (< n 2) n (fib n 0 1 1) ))
<lang Lisp>(defun fib (n a b c)
(cond
</lang>
((< c n) (fib n b (+ a b) (+ 1 c)))
===version 2===
((= c n) b)
<lang Emacs Lisp>
(t a)))

(defun fibonacci (n)
(defun fibonacci (n)
(let ( (vec) (i) (j) (k) )
(if (< n 2)
(if (< n 2) n
n
(progn
(fib n 0 1 1)))</lang>

(setq vec (make-vector (+ n 1) 0) i 0 j 1 k 2)
===version 2===
(setf (aref vec 1) 1)

(while (<= k n)
<lang Lisp>(defun fibonacci (n)
(setf (aref vec k) (+ (elt vec i) (elt vec j) ))
(setq i (+ 1 i) j (+ 1 j) k (+ 1 k) ))
(let (vec i j k)
(elt vec n) ))))
(if (< n 2)
n
</lang>
(setq vec (make-vector (+ n 1) 0)
i 0
j 1
k 2)
(setf (aref vec 1) 1)
(while (<= k n)
(setf (aref vec k) (+ (elt vec i) (elt vec j)))
(setq i (1+ i)
j (1+ j)
k (1+ k)))
(elt vec n))))</lang>

<b>Eval:</b>
<b>Eval:</b>

<lang Emacs Lisp>
(insert
<lang Lisp>(insert
(mapconcat '(lambda (n) (format "%d" (fibonacci n) ))
(mapconcat (lambda (n) (format "%d" (fibonacci n)))
(number-sequence 0 15) " ") )
(number-sequence 0 15) " "))</lang>

</lang>
{{out}}
<b>Output:</b>

<pre>
0 1 1 2 3 5 8 13 21 34 55 89 144 233 377 610
0 1 1 2 3 5 8 13 21 34 55 89 144 233 377 610
</pre>


=={{header|Erlang}}==
=={{header|Erlang}}==