Add the fibonacci two functions
authorJérôme Benoit <jerome.benoit@piment-noir.org>
Sun, 7 May 2017 20:57:46 +0000 (22:57 +0200)
committerJérôme Benoit <jerome.benoit@piment-noir.org>
Sun, 7 May 2017 20:57:46 +0000 (22:57 +0200)
Signed-off-by: Jérôme Benoit <jerome.benoit@piment-noir.org>
exercices/arithmetic.lsp

index 160645e3840954a726524daacbd51e2339d3c9de..4bfa94f319b2d8fa207a1a01af672a33da8a2123 100755 (executable)
@@ -60,6 +60,7 @@
 
 (setq L '(3 7 + 4 2 + *))
 (setq M '(4 3 7 + * 2 -))
+(setq N '(10 10 5 / +))
 (define (calculExp P L)
   (cond
     ((null? L) P)
 (println (calculExp '() L))
 ;(trace true)
 (println (calculExp '() M))
+(println (calculExp '() N))
+
+;(trace nil)
+
+(setq Q '(+ (* x 0) (* 10 (+ y 0))))
+(define (algsimplificator L)
+  (cond
+    ((null? L) '())
+    ((= (first L) ) (rest L))
+
+    ))
+(println "algsimplificator")
+;(println algsimplificator(Q))
+
+(define (fibonacci N)
+  (cond
+    ((= N 0) 0)
+    ((= N 1) 1)
+    ((> N 1) (+ (fibonacci (- N 1)) (fibonacci (- N 2))))))
+(println "fibonacci")
+;(println (fibonacci 21))
+;(println (fibonacci 14))
+(println (fibonacci 20))
+(println (time (fibonacci 20)))
+
+;(trace true)
+
+(define (fibo:fibo n)
+  (if (not fibo:mem) (set 'fibo:mem '(0 1)))
+  (dotimes (i (- n 1))
+    (push (+ (fibo:mem -1) (fibo:mem -2)) fibo:mem -1))
+  (last fibo:mem))
+(println "fibo")
+(println (fibo 20))
+(println (time (fibo 20)))
 
 ;(trace nil)