4 (define (Puissance1 P N)
8 ((< N 0) (div 1 (Puissance1 P (- N))))
9 ((* P (Puissance1 P (- N 1))))))
10 (println "Puissance1")
11 (println (Puissance1 5 5))
16 (define (Puissance2 P N)
22 ((= (mod N 2) 0) (Puissance2 (Puissance2 P 2) (/ N 2)))
23 ((* P (Puissance2 (Puissance2 P 2) (/ (- 1 N) 2))))))))
24 (println "Puissance2")
25 ;(println (Puissance2 5 5))
29 ; https://fr.wikipedia.org/wiki/Algorithme_d%27Euclide
43 ; https://fr.wikipedia.org/wiki/Coefficient_binomial
49 ((+ (comb (- N 1) P) (comb (- N 1) (- P 1))))))
56 (setq L '(3 7 + 4 2 + *))
58 (define (calculExp P L)
61 ((= (first L) '+) (+ (first P) (calculExp (rest P) (rest L))))
62 ((= (first L) '-) (- (first P) (calculExp (rest P) (rest L))))
63 ((= (first L) '*) (* (first P) (calculExp (rest P) (rest L))))
64 ;FIXME: test for divide by zero
65 ((= (first L) '/) (/ (first P) (calculExp (rest P) (rest L))))
66 ((cons (first L) (calculExp P (rest L))))))
67 ;(println (calculExp P L))