Data commit
This commit is contained in:
parent
7387c8f97b
commit
cb5bb5e222
199093 changed files with 3378972 additions and 0 deletions
|
|
@ -0,0 +1,8 @@
|
|||
(defun fibonacci-iterative (n &aux (f0 0) (f1 1))
|
||||
(case n
|
||||
(0 f0)
|
||||
(1 f1)
|
||||
(t (loop for n from 2 to n
|
||||
for a = f0 then b and b = f1 then result
|
||||
for result = (+ a b)
|
||||
finally (return result)))))
|
||||
|
|
@ -0,0 +1,33 @@
|
|||
(defparameter *fibo-start* '(1 1)) ; elements 1 and 2
|
||||
|
||||
;;; Helper functions
|
||||
(defun grow-fibo (fibo)
|
||||
(cons (+ (first fibo) (second fibo)) fibo))
|
||||
|
||||
(defun generate-fibo (fibo n) ; n must be > 1
|
||||
(if (equal (list-length fibo) n)
|
||||
fibo
|
||||
(generate-fibo (grow-fibo fibo) n)))
|
||||
|
||||
;;; User functions
|
||||
(defun fibo (n)
|
||||
(cond ((= n 0) 0)
|
||||
((= (abs n) 1) 1)
|
||||
(t (let ((result (first (generate-fibo *fibo-start* (abs n)))))
|
||||
(if (and (< n -1) (evenp n))
|
||||
(- result)
|
||||
result)))))
|
||||
|
||||
(defun fibo-list (n)
|
||||
(cond ((< n 1) nil)
|
||||
((= n 1) '(1))
|
||||
(t (reverse (generate-fibo *fibo-start* n)))))
|
||||
|
||||
(defun fibo-range (lower upper)
|
||||
(if (<= upper lower)
|
||||
nil
|
||||
(reverse (generate-fibo
|
||||
(list
|
||||
(fibo (1+ lower))
|
||||
(fibo lower))
|
||||
(1+ (- upper lower))))))
|
||||
|
|
@ -0,0 +1,7 @@
|
|||
(defun fibonacci (n)
|
||||
(let ((a 0) (b 1) (c n))
|
||||
(loop for i from 2 to n do
|
||||
(setq c (+ a b)
|
||||
a b
|
||||
b c))
|
||||
c))
|
||||
|
|
@ -0,0 +1 @@
|
|||
(loop for x = 0 then y and y = 1 then (+ x y) do (print x))
|
||||
|
|
@ -0,0 +1,4 @@
|
|||
(defun fibonacci-recursive (n)
|
||||
(if (< n 2)
|
||||
n
|
||||
(+ (fibonacci-recursive (- n 2)) (fibonacci-recursive (- n 1)))))
|
||||
|
|
@ -0,0 +1,4 @@
|
|||
(defun fibonacci-tail-recursive ( n &optional (a 0) (b 1))
|
||||
(if (= n 0)
|
||||
a
|
||||
(fibonacci-tail-recursive (- n 1) b (+ a b))))
|
||||
|
|
@ -0,0 +1,9 @@
|
|||
(defun fib (n &optional (a 1) (b 0) (p 0) (q 1))
|
||||
(if (= n 1) (+ (* b p) (* a q))
|
||||
(fib (ash n -1)
|
||||
(if (evenp n) a (+ (* b q) (* a (+ p q))))
|
||||
(if (evenp n) b (+ (* b p) (* a q)))
|
||||
(+ (* p p) (* q q))
|
||||
(+ (* q q) (* 2 p q))))) ;p is Fib(2^n-1), q is Fib(2^n).
|
||||
|
||||
(print (fib 100000))
|
||||
|
|
@ -0,0 +1,13 @@
|
|||
;; Project : Fibonacci sequence
|
||||
|
||||
(defun fibonacci (nr)
|
||||
(cond ((= nr 0) 1)
|
||||
((= nr 1) 1)
|
||||
(t (+ (fibonacci (- nr 1))
|
||||
(fibonacci (- nr 2))))))
|
||||
(format t "~a" "First 10 Fibonacci numbers")
|
||||
(dotimes (n 10)
|
||||
(if (< n 1) (terpri))
|
||||
(if (< n 9) (format t "~a" " "))
|
||||
(write(+ n 1)) (format t "~a" ": ")
|
||||
(write (fibonacci n)) (terpri))
|
||||
|
|
@ -0,0 +1,8 @@
|
|||
(defmethod fib (n)
|
||||
(declare ((integer 0 *) n))
|
||||
(+ (fib (- n 1))
|
||||
(fib (- n 2))))
|
||||
|
||||
(defmethod fib ((n (eql 0))) 0)
|
||||
|
||||
(defmethod fib ((n (eql 1))) 1)
|
||||
|
|
@ -0,0 +1,9 @@
|
|||
(defun fibo (n)
|
||||
(cond ((< n 0) nil)
|
||||
((< n 2) n)
|
||||
(t (let ((leo '(1 0)))
|
||||
(loop for i from 2 upto n do
|
||||
(setf leo (cons (+ (first leo)
|
||||
(second leo))
|
||||
leo))
|
||||
finally (return (first leo)))))))
|
||||
Loading…
Add table
Add a link
Reference in a new issue