Scheme - TD n° 5
22 mars 2000
Récursions numériques
(define (A x y)
(cond ((= y 0) 0)
((= x 0) (* 2 y))
((= y 1) 2)
(else (A (- x 1) (A x (- y 1))))))
(define (f n) (A 0 n))
(define (g n) (A 1 n))
(define (h n) (A 2 n))
Donner l'expression mathématique de f, g et h.
f(n) = 2n
h(n) = A(1,A(2,n-1)) = g(h(n-1)) = 2h(n-1) = 2..2 (n fois)
On considère la fonction suivante:
(define (coco n)
(cond ((<= n 0) 0)
(else (+ (* 10 (coco (quotient n 10)))
(remainder n 10)))))
Evaluer:
> (coco 113) 113 > (coco -113) 0 > (coco 18746378450) 18746378450Faire une fonction (somme-carre n) qui calcule la somme des n premiers carrés: 1 + 4 + 9 + 16 ... + n2
(define (somme-carre n)
(cond ((= n 0) 0)
(else (+ (* n n) (somme-carre (- n 1))))))
Faire une fonction (carre-somme n) qui calcule le carré de la somme des n premiers entiers: (1 + 2 + 3 ... + n)2
(define (carre-somme n)
(cond ((= n 0) 0)
(else (let ((s (carre-somme (- n 1))))
(+ (* n n) (* 2 n (sqrt s)) s)))))
> (piquet) somme=0, 10 somme=10, 10 somme=20, 12 erreur : nombre entre 1 et 10 ! somme=20, 10 somme=30, 10 somme=40, 10 somme=50, 10 somme=60, 10 somme=70, 10 somme=80, 10 somme=90, 10 gagne ! > (piquet1) somme=0, joueur 1: 10 somme=10, joueur 2: 10 somme=20, joueur 1: 12 erreur : nombre entre 1 et 10 ! somme=20, joueur 1: 9 somme=29, joueur 2: 10 somme=39, joueur 1: 10 somme=49, joueur 2: 10 somme=59, joueur 1: 10 somme=69, joueur 2: 10 somme=79, joueur 1: 10 somme=89, joueur 2: 10 somme=99, joueur 1: 10 somme=109, joueur 1 a gagne !
Version en utilisant quelques objets graphiques : frame%, vertical-panel%, button%, text-field%, get-text-from-user