wayground logo

Free Printable Worksheets

Font size

S
M
L
XL
Worksheets

Récursivité

Total questions: 13

Worksheet time: 9mins

Name
Class
Date
1.

Donner le profil de la fonction f

a)

int -> int -> int

b)

float -> float -> float

c)

int -> int -> float

d)

float -> float -> int

2.

Donner le profil de la fonction f

a)

'a -> 'a -> string -> string

b)

float -> float -> string -> string

c)

int -> int -> string -> string

d)

'a -> 'a-> char -> char

e)

int -> int -> char -> char

3.

Donner le profil de la fonction f

(a)  

4.

En TD nous avons défini les entiers de Peano. Rappeler une définition du type natP en OCaml.

a)

type natP = int

b)

type natP = Z | int

c)

type natP = Z|S of natP

d)

type natP = Z of int | S of natP

5.

Comment représente t-on l'entier 4 avec le type natP ?

a)

S (S (S (S Z)))

b)

Z

c)

4

d)

S(S (S (S (S Z))))

6.

Si ff  est une fonction récursive, quelle syntaxe doit-on utiliser en OCaml pour la déclarer ?

a)

let f = ...

b)

let rec f = ...

c)

let f rec = ...

d)

rec let f =

7.

On a implémenté une fonction addP, quel est le résultat de addP (S Z) (S (S (S Z))) ?

a)

3

b)

4

c)

S(S(S(S Z)))

d)

S(S(S Z))

8.

Si une fonction termine, une mesure de cette fonction est une suite qui prend les mêmes arguments que la fonction et qui est

a)

décroissante dans N

b)

croissante dans N

c)

constante dans N

d)

décroissante dans R

9.

On souhaite convertir un type natP en un entier, quelle implémentation est correcte ?

a)
b)
c)
d)
10.

On définit le type entier naturel: type N = int, Donner le profil d'une fonction qui convertir un entier naturel en natP.

a)

f: natP -> N

b)

f:N->N->natP

c)

f:N->N

d)

f:N->natP

11.

On voudrait maintenant implémenter la factorielle: n!=n(n1)×...×2×1n!=n\left(n-1\right)\times...\times2\times1  Combien vaut 6!6!  ?

a)

120

b)

670

c)

720

d)

12

12.

Quel sera le profil de factorielle ?

a)

factorielle:int -> int -> int

b)

factorielle: int -> int*int

c)

factorielle:int -> int

d)

factorielle: int*int

13.

Quelle implémentation de n!n!  est correcte ?

a)

let rec fact n = match n with

|0 -> 1

|n->n*(fact (n-1));;

b)

let rec fact n = match n with

|1 -> 1

|n->n*(fact (n-1));;

c)

let fact n = match n with

|0 -> 1

|n->n*(fact (n-1));;

d)

let rec fact n = match n with

|0 -> 1

|n->n*(fact n);;