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))
12 (println (Puissance1 2 12))
17 (define (Puissance2 P N)
23 ((= (mod N 2) 0) (Puissance2 (Puissance2 P 2) (/ N 2)))
24 ((* P (Puissance2 (Puissance2 P 2) (/ (- N 1) 2))))))))
25 (println "Puissance2")
26 (println (Puissance2 5 5))
27 (println (Puissance2 2 12))
31 ; https://fr.wikipedia.org/wiki/Algorithme_d%27Euclide
45 ; https://fr.wikipedia.org/wiki/Coefficient_binomial
46 ; relation de pascal commenté
51 ;((+ (comb (- N 1) P) (comb (- N 1) (- P 1))))))
52 ((/ (* N (comb (- N 1) (- P 1))) P))))
56 (println "(comb 12 8) = "(comb 12 8))
61 (setq L '(3 7 + 4 2 + *))
62 (setq M '(4 3 7 + * 2 -))
63 (define (calculExp P L)
66 ((= (first L) '+) (calculExp (cons (+ (first P) (P 1)) (rest (rest P))) (rest L)))
67 ((= (first L) '-) (calculExp (cons (- (P 1) (first P)) (rest (rest P))) (rest L)))
68 ((= (first L) '*) (calculExp (cons (* (first P) (P 1)) (rest (rest P))) (rest L)))
69 ;FIXME: test for divide by zero
70 ((= (first L) '/) (calculExp (cons (/ (P 1) (first P)) (rest (rest P))) (rest L)))
71 ((calculExp (cons (first L) P) (rest L)))))
73 (println (calculExp '() L))
75 (println (calculExp '() M))