• Aucun résultat trouvé

Judicaël Courant 13 septembre 2017

N/A
N/A
Protected

Academic year: 2022

Partager "Judicaël Courant 13 septembre 2017"

Copied!
2
0
0

Texte intégral

(1)

Lycée La Martinière Monplaisir

Informatique Commune 2eannée TP 1 : récursion

TP 1 : récursion

Judicaël Courant 13 septembre 2017

Exercice 1 : Recherche séquentielle

On cherche à écrire une fonction chercheindex(t,x). Appliquée à un tableau tet une valeur x, cette fonction devra retourner un index i tel que t[i] ==x s’il en existe un, et la valeur−1sinon.

Vous écrirez d’une part cette fonction sous forme impérative, d’autre part sous forme récursive.

Quelle est la complexité de vos fonctions ?

Votre code s’exécute-t-il de façon satisfaisante sur un tableau de grande taille ? (Par exemple 10000 éléments) Expliquez.

Exercice 2 : Recherche dichotomique dans un tableau trié

Écrire une fonction chercheindexord(t,x). Cette fonction devra retourner un indexi tel que t[i] ==x s’il en existe un, et la valeur −1 sinon. On suppose en outre que les valeurs du tableau tsont triées par ordre croissant.

Cette fonction devra travailler par dichotomie sur le tableau.

Vous écrirez une version récursive et une version itérative. Vous justifierez soigneuse- ment la correction de votre code.

Quelle est la complexité de vos fonctions ?

Votre code s’exécute-t-il de façon satisfaisante sur un tableau de grande taille ? (Par exemple 10000 éléments) Expliquez.

Exercice 3

Cet exercice est tiré du sujet 0 du concours CCP Math MP (publié en 2014). Des re- marques et questions ont été rajoutées en italique.

Le code doit être écrit en langage Python (ou Scilab). En particulier, on prendra soin de bien respecter l’indentation.

1. Écrire une fonction factorielle qui prend en argument un entier naturelnet renvoie n! (on n’acceptera pas bien sûr de réponse utilisant la propre fonction factorielle du module math de Python ou Scilab).

2. Écrire une fonction seuil qui prend en argument un entier M et renvoie le plus petit entier naturel ntel n!> M.

Judicaël Courant - 13 septembre 2017 1/2 Document sous licence Art Libre (http://artlibre.org)

(2)

Lycée La Martinière Monplaisir

Informatique Commune 2eannée TP 1 : récursion

3. Écrire une fonction booléenne nommée est_divisible, qui prend en argument un entier naturelnet renvoie True si n! est divisible par n+ 1 et False sinon.

4. On considère la fonction suivante nommée mystere : def mystere(n) :

s = 0

for k in range(1,n+1) : s = s + factorielle(k) return s

a) Quelle valeur renvoie mystere(4) ?Essayez de le faire d’abordsansordinateur.

Puis avec ordinateur pour comprendre ce qu’il se passe.

b) Déterminer le nombre de multiplications qu’effectue mystere(n).À faire sans ordinateur si possible. Mais pour vous aider, vous pouvez ajouter, dans la fonction factorielle, des instructions pour imprimer, à chaque appel, le nombre de multiplications faites.

c) Proposer une amélioration du script de la fonction mystere afin d’obtenir une complexité linéaire.On écrira une fonction mystere2avec cette complexité et on vérifiera qu’on peut par exemple calculer mystere(100000).

Judicaël Courant - 13 septembre 2017 2/2 Document sous licence Art Libre (http://artlibre.org)

Références

Documents relatifs

Mêmes questions en remplaçant le quantificateur exis- tentiel par un quantificateur universel dans la défini- tion de L2. Exercice 2 Soit (Q, q 0 , F, δ) un automate sur un

(ii) ⇒ (i) Si G est connexe d’ensemble d’arêtes minimal, alors il ne peut posséder de cycle : sinon en enlevant une arête d’un cycle, on obtient un graphe avec un

Écrire une fonction coaccessibles : afd -> int list retournant la liste des états coaccessibles de l’automate qui lui est passé en argument. Q14 On dit qu’un automate est

Écrire une fonction inverse(s) prenant en argument la représentation d’une

Écrire une fonction fusion(t1, t2) prenant en argument deux tableaux t1 et t2 de nombres supposés triés 1 de longueurs

— Il existe un moyen de convaincre quelqu’un qu’une formule est satisfiable en lui donnant un certificat (de taille polynomiale en la taille de la formule), qu’il peut vérifier

Écrire une fonction size : 'a abr -> int de complexité constante retournant la

Écrire une fonction enumere prenant en argument un