cours  |  td  |  examens  |  doc  |  liens  |  horaires
 Scheme

Université de Caen - UFR de Sciences
Deug MIAS-MASS
Marc Chemillier

Scheme - TD n° 5
26 mars 2003

Récursions numériques




  • Exercices : (1h1/2)

    1. Faire 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))))))
      
    2. 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) (let ((s (somme n))) (* s s)))
      (define (somme n) (if (= n 0) 0 (+ n (somme (- n 1)))))
      
      (define (carre-somme n)
        (cond ((= n 0) 0)
             	(else (let ((s (carre-somme (- n 1))))
                      (+ (* n n) (* 2 n (sqrt s)) s)))))
      
    3. On considère la suite définie par un = (un-1)2 - un-1 pour tout entier n > 0, et par u0 = 2.001. Faire une fonction (u n) calculant un. On demande une version optimisée (Partiel 1996).
      (define (u n)
       (cond ((= n 0) 2.001)
             (else (let ((x (u (- n 1))))  (- (* x x) x)))))
      
      
    4. On considère la suite définie par un = 10n! pour tout entier n > 0. Après avoir exprimé un en fonction de un-1 à l'aide de la fonction expt, faire une fonction (u n) calculant un. On rappelle que (expt x y) calcule xy (Partiel 1995).
      (define (u n)
       (cond ((= n 1) 10)
             (else (expt (u (- n 1)) n))))
      
      
    5. Faire une fonction qui inverse les chiffres d'un entier naturel. Exemple : (inv 4256) -> 6524 (Partiel 1991). On utilisera les fonctions quotient et remainder. Indication : on déplace un chiffre entre deux entiers u et v (ainsi u=324, v=12 donnent u'=32, v'=124). Quelle est l'expression Scheme de u' et v' en fonction de u et v? Faire une boucle qui itere la transformation jusqu'à u=0.
      (define (inv n) (aux n 0))
      
      (define (aux u v)
       (cond ((= n 0) v)
             (else (aux (quotient u 10) (+ (* 10 v) (remainder u 10))))))
      
      

  • Avec machines : (1h1/2) Boucle de lecture d'un fichier


    cours  |  td  |  examens  |  doc  |  liens  |  horaires
     Scheme