Devoir maison 1 - Corrigé
Devoir maison 1 - Corrigé. M2 AIGEME année 2008-2009. Exercice 1. 1. On souhaite écrire une fonction récursive qui calcule le carré d'un entier.
Corrigé de la Fiche de TD Récursivité Exercice 1
Exercice 2 a) Écrire une fonction itérative qui renvoie le reste de la division euclidienne d'un entier a par un entier b en utilisant les soustractions
SUJET + CORRIGE
UE J1MI2013 : Algorithmes et Programmes Exercice 1 : Récursivité ... Écrire une fonction python récursive terminale combRecAux(np
Corrigés des exercices sur les fonctions récursives
Corrigés des exercices sur les fonctions Exercice 7.1.1 sous-programmes récursifs ... variation qui affecte le paramètre à chaque appel récursif.
Exemples dalgorithmes récursifs 1 Des exercices sur les suites
sce désigne la traduction de l'algorithme 1 sous SCILAB en version récursive à compléter. Ainsi lorsque la mention trous n'est pas présente
Travaux Dirigés dalgorithmique no4
Écrire une fonction récursive qui calcule la somme de nombres de 1 a n si n > 0 et renvoie 0 sinon. Exercice 4. Donner un algorithme récursif pour calculer
RECURSIVITE Exercices - Corrigés
Récursivité / Exercices / Corrigés. Fénelon Sainte-Marie Comme suggéré en séance faire « tourner un algorithme à la main » est très formateur !
TD dalgorithmique avancée Corrigé du TD 2 : récursivité
Corrigé du TD 2 : récursivité Écrivez un algorithme récursif calculant Fib(n). Fibonacci(n) ... Écrire un algorithme récursif qui calcule pour n > 0
Feuille dexercices dinformatique – Récursivité 2019-2020 Pour
Exercice 6 – Horner : Écrire une version récursive Horner(Lx) de l'algorithme de Horner
Récursivité
´Ecrire une fonction C utilisant un algorithme récursif
Récursivité - mathuniv-lyon1fr
Récursivité 1 Contenududocumentettravailàréaliser – Le documentprésentedes exemples de fonctionsdé?niesdefaçonrécursive – L’objectifestdecomprendrelaprogrammationrécursivedequelquesfonctionspuisdechercheràen écrirepar vous-mêmesquelques-unes
Corrigés des exercices sur les fonctions récursives
Corrigés des exercices sur les fonctions récursives Exercice 7 1 1 sous-programmes récursifs Pour chacun des sous-programmes nous donnerons les paramètres en précisant le paramètre sur lequel porte la récurrence le cas de base (valeur de ce paramètre pour lequel le calcul s’arrête) et la
Searches related to récursivité algorithme exercice corrigé PDF
l’algorithme pour n se termine seulement si l’algorithme se termine pour n+1 Or il n’existe pasd’entier strictement positif pour lesquels l’agorithme s’arrete Exercice 2 : Suite r´ecurente Algorithme Suite(n : entier) : entier d´ebut si n = 0 alors retourner 0 8 sinon retourner 0 6Suite(n?1) ?n si ?n Exercice 3 : Fibonacci
Comment comprendre la programmation récursive de quelques fonctions ?
L’objectif est de comprendre la programmation récursive de quelques fonctions puis de chercher à enécrire par vous-mêmes quelques-unes. Trois exercices sont à rendre (exercices dont le titre est sur fond jaune) dans les casiers numériques devos enseignants pour le 20/01. Une fonction récursive est une fonction qui. s’appelle elle-même.
Quels sont les exercices corrigés ?
Les exercices corrigés suivants concernent le principe d’algorithme récursif, par exemple Fibonacci, les tours de Hanoï et bien d’autres cas mathématiques.
Comment résoudre les appels récursifs ?
S’assurer que, dans les appels récursifs, ..les arguments sont plus "simples" queceux avec lesquels la fonction a été appelée (ce qui signi?e essentiellement qu’ils« évoluent vers le cas de base ») Reconstituer correctement la valeur de retour de la fonction à partir du résultatdu ou des appels récursifs.
Comment calculer une somme récursive?
# La fonction récursive pour le calcul de la somme proprement dit. def sum_sq_inv(n): if n == 1: return 1 else: return 1/n**2 + sum_sq_inv(n-1) # DEBUT DU SCRIPT # ===============
DISVE { LicenceAnn
ee :2011/2012Semestre 2PARCOURS :Licence LIMI201 & LIMI211
UE J1MI2013 :Algorithmes et Programmes
Epreuve :Devoir Surveille Terminal
Date :Lundi 11 juin 2012
Heure :8 heures 30
Duree :1 heure 30
Documents : non autorises
Epreuve de M. AlainGriffaultSUJET + CORRIGE
Avertissement
{ La plupart des questions sont independantes. { Le sujet est sans doute un peu long. { Les indentations des fonctions ecrites enPython doivent ^etre respectees. { L'espace laisse pour les reponses est susant (sauf si vous utilisez ces feuilles comme brouillon, ce qui est fortement deconseille).QuestionPointsScoreRecursivite9
Le tri par base11
Variante tri rapide10
Complexite10
Total:40
Exercice 1 : Recursivite (9 points)
Le nombre de combinaisonsCpnrepresente le nombre de sous-ensembles de cardinalpd'un ensemble de cardinaln. Il est deni parCpn= 1 sip= 0 ou sip=n, et parCpn=Cp1 n1+Cp n1dans le cas general. Une propriete interessante pour calculer les combinaisons est :Cpn=nCp1 n1p (a) Soit la fonctioncombRec(n,p)ounetpsont deux entiers positifs tels quepn. defcombRec(n,p): if(p == 0orn == p): return1 else: returnncombRec(n1,p1) // p i. (11=2points) Completer le tableau suivant pour simuler la pile d'execution lors de l'appel
combRec(7,3).Solution: appels successifs x combRec515 combRec6215 combRec7335 fonctionnpretour? UE J1MI2013 : Algorithmes et Programmes DS Terminal, Annee 2011/2012 Soit les fonctionscombRecV2(n,p)etcombRecUV(n,p,u,v)ounetpsont deux entiers positifs tels quepn, etuetvdeux parametres supplementaires. defcombRecUV(n,p,u,v ): if(p == 0orn == p): return1 else: returnncombRecUV(n1,p1,un,vp) // p defcombRecV2(n,p): returncombRecUV(n,p,1 ,1) ii. (11=2points) Completer le tableau suivant an de simuler la pile d'execution lors d'un
appel acombRecV2(7,3).Solution: combRecUV514265 combRecUV627315 combRecUV731135 combRecV27335 fonctionnpuvretour? dans le second tableau, la valeur uv lors du dernier appel recursif est egal au resultat nal. C'est donc qu'il est inutile de propager le resultat jusqu'a l'appel initial. Ecrire une fonction python recursive terminalecombRecAux(n,p,u,v)qui calcule le nombre de combinaisonsCpn, et preciser l'appel initial a cette fonction dans une fonction python combRecTerm(n,p).Solution: defcombRecAux(n,p,u,v ): if(p == 0orn == p): returnu // v else: returncombRecAux(n1,p1,un,vp) defcombRecTerm(n,p): returncombRecAux(n,p,1 ,1)(c) (3 points) Ecrire une fonction python iterativecombIter(n,p), deriveeautomatiquementde la fonctioncombRecAux(n,p,u,v)qui calcule le nombre de combinaisonsCpn.Solution: defcombIter (n,p): u = 1 v = 1 whileTrue : if(p == 0orn == p): returnu // v else: # n,p ,u, v = n1,p1,un, vp u = un v = vp n = n1 p = p1Page 2 sur 8 UE J1MI2013 : Algorithmes et Programmes DS Terminal, Annee 2011/2012Exercice 2 : Le tri par base (11 points)
Nous souhaitons trier un tableau de personnes suivant leurs dates de naissance. Nous allons etudier deux approches : La premiere utilise un algorithme de triclassiquequi utilise une fonction de com- paraison de deux personnes; et la seconde est une adaptation de l'algorithme de tri par base qui aete beaucoup utilise autrefois pour trier les cartes perforees. Dans la suite, nous supposerons que les
personnes sont stockees sous forme de tableaux. (a) (2 points) Completer la fonction pythonneAvant(P1,P2)de comparaison de deux personnes P1etP2qui retourneVraisiP1est nee avant ou le m^eme jour queP2, etFauxsinon. Cette fonctionneAvant(P1,P2)pourra ^etre utilisee dans n'importe lequel des algorithmes de tri vus en cours pour trier un tableau deNpersonnes suivant leur date de naissance. Il surade remplacer les testsT[i]<=T[j]parneAvant(T[i],T[j]).Solution:Trois solutions (un predicat, des branchements, une iteration) parmi d'autres.
# p1 et p2 sont deux tableaux de 3 entiers # p1 [0] et p2 [0] contiennent les jours de naissance # p1 [1] et p2 [1] contiennent les mois de naissance # p1 [2] et p2 [2] contiennent les annees de naissance defneAvant(p1 , p2 ): return((p1 [2]Le tri par base consiste a appliquer une suite de tris stables sur des parties de l'objet a trier. Pour
une date de naissance, il faut eectuer sequentiellement trois trisstables:1. Trier (avec un tri stable) suivant le jour de naissance.
2. Trier (avec un tri stable) suivant le mois de naissance.
3. Trier (avec un tri stable) suivant l'annee de naissance.
i. (2 points) Soit le tableau suivant de trois personnes avec leurs dates de naissances. indice012 jour142222 mois313 annee200420042001Page 3 sur 8
UE J1MI2013 : Algorithmes et Programmes DS Terminal, Annee 2011/2012 Completer le tableau suivant apres chacune des trois etapes. Solution:Apres le tri stableApres le tri stableApres le tri stable jours de naissancemois de naissanceannees de naissance indice012012012 jour142222221422222214 mois313133313 ii. (2 points) Il est connu que le tri par base n'est pas correct si le tri utilise n'est passtable. Au choix, justier cette armation, ou bien simuler sur l'exemple precedent un tri parbase utilisant le tri par selection.Solution:Par exemple, la derniere etape peut donner avec un tri non stable :
Apres un tripar selection non stable.
indice012 jour221422 mois331 annee200120042004 Ce qui demontre que le tri base doit n'utiliser que des tris stables. iii. (1 point) Donner la liste des tris stables vus en cours.Solution:
deftriStable (t , clef ): # clef indice le second indice a utiliser pour le tri # N' importe lequel des 3 tris stables suivants peut etre utilise # triInsertion (t , clef ) triBulle (t , clef )# triFusion (t , clef )iv. (2 points) Completer la fonction pythontriBase(t)pour trier un tableau deNper-
sonnes suivant leurs dates de naissances. Vous pourrez utiliser (sans en donner le code) une fonctiontriStable(t,clef)qui trie un tableauta deux dimensions en fonc- tion des valeurst[i][clef]. Par exemple sitest un tableau de personnes, l'appel triStable(t,1)trie les personnes en fonction des mois de naissances.Solution: deftriBase ( t ): # t [ i ][0] est le jour de naissance de la personne t [ i ] # t [ i ][1] est le mois de naissance de la personne t [ i ] # t [ i ][2] est l 'annee de naissance de la personne t [ i ] forclefinrange (3):triStable (t , clef )v. (2 points) Donner et justier la complexite de votre algorithmetriBaseen fonction de
l'algorithme de tristableutilise.Solution:Le tri appelle un nombre de fois determine (ici 3) un algorithme de tri
stable. La complexite du tri par base est donc celle du tri stable utilise soit : { (n2) pour les tris par insertion et a bulles. { (nlog2(n)) pour le tri par fusion.Page 4 sur 8 UE J1MI2013 : Algorithmes et Programmes DS Terminal, Annee 2011/2012Exercice 3 : Variante tri rapide (10 points)
(a) (2 points) Justier la validite de la fonction pythonpartitionner(t,g,d)suivante, dans laquelle les iterationsRepeterde l'algorithme 3 du tri rapide vu en cours sont remplaceespar des iterationsTant que.Solution:Les deux structures de programme suivantes sont equivalentes.Algorithm 1Repeter ...jusqu'a1:repeat
2:S3:untilPAlgorithm 2Tant que ...1:S
2:while:Pdo
3:S4:end whileAlgorithm 3Partitionner(t,g,d)Condition :0g < dlen(t)1
1:pivot t[g]
2:i g1
3:j d+ 1
4:while true do
5:repeat
6:j j1
7:untilt[j]<=pivot
8:repeat
9:i i+ 1
10:untilt[i]>=pivot
11:ifi < jthen
12:Echange(t;i;j)
13:else
14:returnj
15:end if
16:end while
Garantie :8kj;t[k]pivot
8k > j;t[k]pivot
Complexite :(dg)Algorithm 4TriRapideRec(t,g,d)Condition :0g < dlen(t)11:ifg < dthen
2:m Partitionner(t;g;d)
3:TriRapideRec(t;g;m)
4:TriRapideRec(t;m+ 1;d)
5:end if
Garantie :8k2[g;d[;t[k]t[k+ 1]
Complexite :
((dg)log2(dg)); O((dg)2)Algorithm 5TriRapide(t)1:TriRapideRec(t;0;len(t)1)Complexite :
(nlog2(n));O(n2) avecn=len(t)1defechange(t , i , j ):2 TMP = t [ i ]
3 t [ i ] = t [ j ]
4 t [ j ] = TMP
56defpartitionner (t ,g ,d):
7 pivot = t [ g ]
8 i = g1
9 j = d+1
10whileTrue :11 j= 112whilet [ j ]>pivot :13 j= 114 i += 1
15whilet [ i ] 17ifi 18 echange(t , i , j )
19else:
20returnj
21
22deftriRapideRec (t ,g ,d):
23ifg 24 m = partitionner (t ,g ,d)
25 triRapideRec (t ,g ,m)
26 triRapideRec (t ,m+1,d)
27
28deftriRapide ( t ):
29 triRapideRec (t ,0 , len ( t)1)
Page 5 sur 8
UE J1MI2013 : Algorithmes et Programmes DS Terminal, Annee 2011/2012 (b) Soient l'algorithme du drapeau hollandais vu en cours et une ecriture possible en python. Algorithm 6Drapeau(t)Condition :8i2[0;len(t)1];t[i]2[0;2] 1:i 0 2:j i 3:k len(t)1
4:while(jk)do
5:ift[j] = 1then// 1 : Blanc
6:j j+ 1
7:else ift[j] = 0then// 0 : Bleu
8:Echange(t;i;j)
9:i i+ 1
10:j j+ 1
11:else// 2 : Rouge
12:Echange(t;j;k)
13:k k1
14:end if
15:end while
16:returni;j;k
Garantie :8l2[0;i[;t[l] = 0
8l2[i;j[;t[l] = 1
8l2]k;len(t)1];t[l] = 2
Complexite :(n);avecn=len(t)1defdrapeau( t ):
2# t est un tableau de 0, 1 ou 2
3# 0 : Bleu , 1 : Blanc , 2 : Rouge
4 i = 0
5 j = i
6 k = len ( t )1
7whilej<= k:
8ift [ j ] = 1:
9 j += 1
10else:
11ift [ j ] == 0:
12 echange(t , i , j )
13 i += 1
14 j += 1
15else:
16 echange(t , j ,k)
17 k= 1
18returni , j ,k
quotesdbs_dbs13.pdfusesText_19
17ifi 18 echange(t , i , j )
19else:
20returnj
21
22deftriRapideRec (t ,g ,d):
23ifg 24 m = partitionner (t ,g ,d)
25 triRapideRec (t ,g ,m)
26 triRapideRec (t ,m+1,d)
27
28deftriRapide ( t ):
29 triRapideRec (t ,0 , len ( t)1)
Page 5 sur 8
UE J1MI2013 : Algorithmes et Programmes DS Terminal, Annee 2011/2012 (b) Soient l'algorithme du drapeau hollandais vu en cours et une ecriture possible en python. Algorithm 6Drapeau(t)Condition :8i2[0;len(t)1];t[i]2[0;2] 1:i 0 2:j i 3:k len(t)1
4:while(jk)do
5:ift[j] = 1then// 1 : Blanc
6:j j+ 1
7:else ift[j] = 0then// 0 : Bleu
8:Echange(t;i;j)
9:i i+ 1
10:j j+ 1
11:else// 2 : Rouge
12:Echange(t;j;k)
13:k k1
14:end if
15:end while
16:returni;j;k
Garantie :8l2[0;i[;t[l] = 0
8l2[i;j[;t[l] = 1
8l2]k;len(t)1];t[l] = 2
Complexite :(n);avecn=len(t)1defdrapeau( t ):
2# t est un tableau de 0, 1 ou 2
3# 0 : Bleu , 1 : Blanc , 2 : Rouge
4 i = 0
5 j = i
6 k = len ( t )1
7whilej<= k:
8ift [ j ] = 1:
9 j += 1
10else:
11ift [ j ] == 0:
12 echange(t , i , j )
13 i += 1
14 j += 1
15else:
16 echange(t , j ,k)
17 k= 1
18returni , j ,k
quotesdbs_dbs13.pdfusesText_19
18 echange(t , i , j )
19else:
20returnj
2122deftriRapideRec (t ,g ,d):
23ifg 24 m = partitionner (t ,g ,d)
25 triRapideRec (t ,g ,m)
26 triRapideRec (t ,m+1,d)
27
28deftriRapide ( t ):
29 triRapideRec (t ,0 , len ( t)1)
Page 5 sur 8
UE J1MI2013 : Algorithmes et Programmes DS Terminal, Annee 2011/2012 (b) Soient l'algorithme du drapeau hollandais vu en cours et une ecriture possible en python. Algorithm 6Drapeau(t)Condition :8i2[0;len(t)1];t[i]2[0;2] 1:i 0 2:j i 3:k len(t)1
4:while(jk)do
5:ift[j] = 1then// 1 : Blanc
6:j j+ 1
7:else ift[j] = 0then// 0 : Bleu
8:Echange(t;i;j)
9:i i+ 1
10:j j+ 1
11:else// 2 : Rouge
12:Echange(t;j;k)
13:k k1
14:end if
15:end while
16:returni;j;k
Garantie :8l2[0;i[;t[l] = 0
8l2[i;j[;t[l] = 1
8l2]k;len(t)1];t[l] = 2
Complexite :(n);avecn=len(t)1defdrapeau( t ):
2# t est un tableau de 0, 1 ou 2
3# 0 : Bleu , 1 : Blanc , 2 : Rouge
4 i = 0
5 j = i
6 k = len ( t )1
7whilej<= k:
8ift [ j ] = 1:
9 j += 1
10else:
11ift [ j ] == 0:
12 echange(t , i , j )
13 i += 1
14 j += 1
15else:
16 echange(t , j ,k)
17 k= 1
18returni , j ,k
quotesdbs_dbs13.pdfusesText_19
24 m = partitionner (t ,g ,d)
25 triRapideRec (t ,g ,m)
26 triRapideRec (t ,m+1,d)
2728deftriRapide ( t ):
29 triRapideRec (t ,0 , len ( t)1)
Page 5 sur 8
UE J1MI2013 : Algorithmes et Programmes DS Terminal, Annee 2011/2012 (b) Soient l'algorithme du drapeau hollandais vu en cours et une ecriture possible en python. Algorithm 6Drapeau(t)Condition :8i2[0;len(t)1];t[i]2[0;2] 1:i 0 2:j i3:k len(t)1
4:while(jk)do
5:ift[j] = 1then// 1 : Blanc
6:j j+ 1
7:else ift[j] = 0then// 0 : Bleu
8:Echange(t;i;j)
9:i i+ 1
10:j j+ 1
11:else// 2 : Rouge
12:Echange(t;j;k)
13:k k1
14:end if
15:end while
16:returni;j;k
Garantie :8l2[0;i[;t[l] = 0
8l2[i;j[;t[l] = 1
8l2]k;len(t)1];t[l] = 2
Complexite :(n);avecn=len(t)1defdrapeau( t ):
2# t est un tableau de 0, 1 ou 2
3# 0 : Bleu , 1 : Blanc , 2 : Rouge
4 i = 0
5 j = i
6 k = len ( t )1
7whilej<= k:
8ift [ j ] = 1:
9 j += 1
10else:
11ift [ j ] == 0:
12 echange(t , i , j )
13 i += 1
14 j += 1
15else:
16 echange(t , j ,k)
17 k= 1
18returni , j ,k
quotesdbs_dbs13.pdfusesText_19[PDF] variable réelle définition économie
[PDF] carte shom pdf
[PDF] instructions nautiques pdf
[PDF] carte marine shom gratuite
[PDF] document sur le système de balisage
[PDF] carte marine méditerranée gratuite
[PDF] les fondements de l'idéologie nazie
[PDF] idéologie nazie définition
[PDF] jeunesses hitlériennes filles
[PDF] l idéologie nazie paragraphe argumenté
[PDF] idéologie nazie pdf
[PDF] l'idéologie nazie paragraphe argumenté
[PDF] idéologie staline
[PDF] idéologie nazie mein kampf