RECURSIVITE Exercices - Corrigés

Documents pareils
EXERCICES : DÉNOMBREMENT

Chapitre 3 : Fonctions d une variable réelle (1)

Module 3 : Inversion de matrices

Séquence 5. La fonction logarithme népérien. Sommaire

Dénombrement. Chapitre Enoncés des exercices

UNIVERSITE MONTESQUIEU BORDEAUX IV. Année universitaire Semestre 2. Prévisions Financières. Travaux Dirigés - Séances n 4

x +1 + ln. Donner la valeur exacte affichée par cet algorithme lorsque l utilisateur entre la valeur n =3.

Groupe orthogonal d'un espace vectoriel euclidien de dimension 2, de dimension 3

20. Algorithmique & Mathématiques

Polynésie Septembre Exercice On peut traiter la question 4 sans avoir traité les questions précédentes.

Limites des Suites numériques

Exo7. Déterminants. = 4(b + c)(c + a)(a + b). c + a c + b 2c Correction. b + a 2b b + c. Exercice 2 ** X a b c a X c b b c X a c b a X

* très facile ** facile *** difficulté moyenne **** difficile ***** très difficile I : Incontournable

[ édité le 10 juillet 2014 Enoncés 1. Exercice 6 [ ] [correction] Si n est un entier 2, le rationnel H n =

Les Nombres Parfaits.

Exercice I ( non spé ) 1/ u 1 = u / Soit P la propriété : u n + 4. > 0 pour n 1. P est vraie au rang 1 car u 1

* très facile ** facile *** difficulté moyenne **** difficile ***** très difficile I : Incontournable

Chap. 5 : Les intérêts (Les calculs financiers)

SÉRIES STATISTIQUES À DEUX VARIABLES

1 Mesure et intégrale

Etude de la fonction ζ de Riemann

Statistique descriptive bidimensionnelle

14 Chapitre 14. Théorème du point fixe

2 ième partie : MATHÉMATIQUES FINANCIÈRES

. (b) Si (u n ) est une suite géométrique de raison q, q 1, on obtient : N N, S N = 1 qn+1. n+1 1 S N = 1 1

Consolidation. C r é e r un nouveau classeur. Créer un groupe de travail. Saisir des données dans un groupe

55 - EXEMPLES D UTILISATION DU TABLEUR.

Séries réelles ou complexes

FEUILLE D EXERCICES 17 - PROBABILITÉS SUR UN UNIVERS FINI

Chap. 6 : Les principaux crédits de trésorerie et leur comptabilisation

capital en fin d'année 1 C 0 + T C 0 = C 0 (1 + T) = C 0 r en posant r = 1 + T 2 C 0 r + C 0 r T = C 0 r (1 + T) = C 0 r 2 3 C 0 r 3...

Chap. 6 : Les principaux crédits de trésorerie et leur comptabilisation

Suites et séries de fonctions

UNIVERSITÉ DE SFAX École Supérieure de Commerce

LES ÉCLIPSES. Éclipser signifie «cacher». Vus depuis la Terre, deux corps célestes peuvent être éclipsés : la Lune et le Soleil.

Dénombrement. Introduction. 1 Cardinaux d'ensembles nis. ECE3 Lycée Carnot. 12 novembre Quelques dénitions

Gérer les applications

Intégration et probabilités ENS Paris, TD (20)13 Lois des grands nombres, théorème central limite. Corrigé :

Sommaire Chapitre 1 - L interface de Windows 7 9

RECHERCHE DE CLIENTS simplifiée

Comportement d'une suite

La France, à l écoute des entreprises innovantes, propose le meilleur crédit d impôt recherche d Europe

Solutions particulières d une équation différentielle...

Statistiques appliquées à la gestion Cours d analyse de donnés Master 1

CHAPITRE 2 SÉRIES ENTIÈRES

Mécanismes de protection contre les vers

Convergences 2/2 - le théorème du point fixe - Page 1 sur 9

STATISTIQUE AVANCÉE : MÉTHODES

Exercices de mathématiques

Examen final pour Conseiller financier / conseillère financière avec brevet fédéral. Recueil de formules. Auteur: Iwan Brot

STATISTIQUE : TESTS D HYPOTHESES

Université de Bordeaux - Master MIMSE - 2ème année. Scoring. Marie Chavent machaven/

Chapitre 3 : Transistor bipolaire à jonction

3.1 Différences entre ESX 3.5 et ESXi 3.5 au niveau du réseau. Solution Cette section récapitule les différences entre les deux versions.

Le marché du café peut être segmenté en fonction de deux modes de production principaux : la torréfaction et la fabrication de café soluble.

Probabilités et statistique pour le CAPES

TRANSFERT DE CHARGE DANS UN RÉSEAU DE PROCESSEURS TOTALEMENT CONNECTÉS (*) par Maryse BÉGUIN ( 1 )

Initiation à l analyse factorielle des correspondances

Formation d un ester à partir d un acide et d un alcool

II LES PROPRIETES DES ESTIMATEURS MCO 1. Rappel : M1 LA REGRESSION : HYPOTHESES ET TESTS Avril 2009

Université Victor Segalen Bordeaux 2 Institut de Santé Publique, d Épidémiologie et de Développement (ISPED) Campus Numérique SEME

Faites prospérer vos affaires grâce aux solutions d épargne et de gestion des dettes

4 Approximation des fonctions

Deuxième partie : LES CONTRATS D ASSURANCE VIE CLASSIQUES

Réseaux d ondelettes et réseaux de neurones pour la modélisation statique et dynamique de processus

Des résultats d irrationalité pour deux fonctions particulières

POLITIQUE ECONOMIQUE ET DEVELOPPEMENT

Etude Spéciale SCORING : UN GRAND PAS EN AVANT POUR LE MICROCRÉDIT?

Tempêtes : Etude des dépendances entre les branches Automobile et Incendie à l aide de la théorie des copulas Topic 1 Risk evaluation

Baccalauréat S Asie 19 juin 2014 Corrigé

Renseignements et monitoring. Renseignements commerciaux et de solvabilité sur les entreprises et les particuliers.

Logiciel de synchronisation de flotte de baladeurs MP3 / MP4 ou tablettes Androïd

Simulations interactives de convertisseurs en électronique de puissance

Un nouvel opérateur de fusion adaptatif. A new adaptive operator of fusion. 1. introduction

UV SQ 20. Automne Responsable d Rémy Garandel ( m.-el. remy.garandel@utbm.fr ) page 1

Statistique Numérique et Analyse des Données

Séries numériques. Chap. 02 : cours complet.

Exercices de révision

DETERMINANTS. a b et a'

Processus et martingales en temps continu

Neolane Message Center. Neolane v6.0

Les solutions mi-hypothécaires, mi-bancaires de Manuvie. Guide du conseiller

PROBLEMES DIOPTIMISATION EN NOMBRES ENTIERS J. L. NICOLAS

RESOLUTION PAR LA METHODE DE NORTON, MILLMAN ET KENNELY

Les algorithmes de tri

Université Pierre et Marie Curie. Biostatistique PACES - UE

RÈGLES ORDINALES : UNE GÉNÉRALISATION DES RÈGLES D'ASSOCIATION

Neolane Leads. Neolane v6.0

La maladie rénale chronique

Lorsque la sécurisation des paiements par carte bancaire sur Internet conduit à une concurrence entre les banques et les opérateurs de réseau

Mobile Business. Communiquez efficacement avec vos relations commerciales 09/2012

Résolution numérique des équations aux dérivées partielles (PDE)

Compte Sélect Banque Manuvie Guide du débutant

La tarification hospitalière : de l enveloppe globale à la concurrence par comparaison

Opérations bancaires avec l étranger *

Échantillonnage et estimation

Télé OPTIK. Plus spectaculaire que jamais.

Cours 5 : ESTIMATION PONCTUELLE

Petit recueil d'énigmes

Terminale S. Terminale S 1 F. Laroche

Transcription:

RECURSIVITE Exercices - Corrigés Exercice - U calcul très classique Ecrire ue foctio Pytho qui calcule la somme des iverses des carrés des premiers etiers aturels o uls. O pourra esuite écrire u script plus complet qui, après le calcul précédet, évalue et affiche π l écart (e %) avec la limite de cette somme qui vaut (rappel : le ombre π e fait pas 6 partie itégrate du cœur du du lagage Pytho. O importera doc pi via la bibliothèque math : from math import pi). O cherche ici à calculer, pour tout etier aturel o ul : S =. i= i π O rappelle que l o a : lim S = lim =. i 6 + + i = Le cas de base est celui où la somme e comporte qu u terme ( e l occurrece) : S =. C est doc le cas où il y aura pas d appel récursif. O a alors : def sum_sq_iv(): if == : retur retur /** + sum_sq_iv(-) Evidemmet, lors de l appel iitial à cette foctio, o devra s être assuré, d ue faço ou d ue autre, que l argumet est bie u etier aturel o ul. C est pourquoi, das le programme (script) ci-après, le bloc d istructios suivat a été ajouté : = 0 while < : = it(iput('nombre de termes? ')) Féelo Saite-Marie 07-08 MP/PC-PC*/PSI* [-7] Marc Lichteberg

Si o souhaite cepedat effectuer les tests das la foctio elle-même (ce est pas ue très boe idée car cela géère de trop ombreux tests iutiles!), o pourra utiliser le code suivat : def sum_sq_iv(): if type()!= it: raise TypeError('Vous devez fourir u etier!') elif <= 0: raise ValueError('Vous devez fourir u etier aturel o ul!') if == : retur retur /** + sum_sq_iv(-) Voici u script possible : # La foctio récursive pour le calcul de la somme propremet dit. def sum_sq_iv(): if == : retur retur /** + sum_sq_iv(-) # DEBUT DU SCRIPT # =============== # Importatio de pi from math import pi # Nombre de termes de la somme. = 0 while type()!= it or < : = it(iput('veuillez saisir le ombre de termes (etier aturel o ul) à sommer? ')) # Calcul de la somme. r = sum_sq_iv() # Erreur relative commise (pourcetage). error = 00 * (6 * r / pi** - ) # Affichage des résultats. prit('la somme des iverses des carrés des '+str()+ ' premiers etiers aturels o uls vaut : '+str(r)) prit('l\'erreur commise vaut '+str(error)+' %.') # FIN DU SCRIPT # ============= Féelo Saite-Marie 07-08 MP/PC-PC*/PSI* [-7] Marc Lichteberg

Exercice Ue foctio mystérieuse? def dk(l,l=[]): if L == []: retur L s = L.pop(0) if s ot i L: L.apped(s) retur dk(l,l) Que reverra la foctio dk défiie ci-dessus lorsqu o l appelle comme suit? dk([34,,3,,,,34,7,,7,7,,3,]) Comme suggéré e séace, faire «tourer u algorithme à la mai» est très formateur! Que vous ayez agi de la sorte ou e écrivat rapidemet la foctio ci-dessus sous IDLE (ou équivalet), vous avez rapidemet réalisé que la foctio dk élimiait «simplemet» les élémets redodats de la première liste passée e argumet tout e costruisat ue deuxième liste correspodat à L privée des élémets redodats. Aisi, la foctio dk supprime les doublos, c est ue «doublos killer». L appel dk([34,,3,,,,34,7,,7,7,,3,]) reverra doc la liste : [34,, 3,, 7, ]. Exercice 3 Le compte est-il bo? Ecrire ue foctio Pytho «compte_a» qui reçoit comme argumet ue chaîe de caractères (évetuellemet vide) et revoie le ombre de «a» qu elle cotiet. La chaîe passée e argumet peut coteir des lettres majuscules. O pourra souhaiter trasformer la chaîe e ue chaîe e coteat que des miuscules (à vous de trouver la méthode qui réalise très bie cette trasformatio). Pourquoi est-il pas pertiet d utiliser cette méthode das votre foctio? Vous pourrez tester votre foctio avec les chaîes suivates :, sphix, abracadabra et automorphisme. Ue chaîe de caractère o vide est rie d autre qu u premier caractère précédat ue autre chaîe de caractère (évetuellemet vide)! Et voilà otre pricipe de récurrece quasimet e place! Le cas de base correspod à ue chaîe de caractère vide. Pour coder le pricipe précédet, il coviet de rappeler que les chaîe de caractères sot idexables comme les listes (mais les méthodes classiques des listes e sot pas dispoibles). Féelo Saite-Marie 07-08 MP/PC-PC*/PSI* [3-7] Marc Lichteberg

O peut doc simplemet accéder à u caractère quelcoque d ue chaîe de caractères via so idice (comme pour ue liste, le premier caractère est d idice ul) et o peut égalemet accéder à ue «sous-chaîe» de caractères. Aisi, si o appelle s ue chaîe de caractères o vide, o accèdera à so premier caractère grâce à s[0] et la chaîe s privée de so premier caractère s obtiet grâce à s[- :]. O obtiet alors la foctio : def compte_a(s): if type(s)!= str: raise TypeError('Vous devez fourir ue chaîe de caractères!') elif le(s) == 0: retur 0 = compte_a(s[:]) if s[0] == 'a': += retur Exercice 4 Ses dessus dessous Ecrire ue foctio Pytho permettat de détermier si ue chaîe de caractères est ou o u palidrome (i.e. pouvat être lue idifféremmet de la gauche vers la droite ou de la droite vers la gauche). La démarche géérale cosiste à comparer les caractères situés aux extrémités de la chaîe. E otat s la chaîe de caractères, o testera doc s[0] et s[-]. O poursuit cette comparaiso sur la ouvelle chaîe obteue e «amputat» la chaîe courate des deux caractères précédets tat que les deux caractères testés sot idetiques. Cette «amputatio» cosiste à coserver la sous-chaîe : s[:-]. Pour ce qui est du cas de base, deux situatios sot à predre e compte : celle d ue chaîe de caractères vide et celle d ue chaîe e comportat qu u seul caractère. D où la foctio palidrome qui, otos-le, revoie u boolée. def palidrome(s): if le(s) == 0 or le(s) == : retur True if s[0]!= s[-]: retur False retur palidrome(s[:-]) Féelo Saite-Marie 07-08 MP/PC-PC*/PSI* [4-7] Marc Lichteberg

Exercice 5 Ue bijectio de das Ci-après, ue représetatio de la foctio de couplage de Cator qui établit ue bijectio de das (les couples d etiers aturels sot représetés e bleu et les etiers associés e blac sur fod oir). O a par exemple, e otat f la foctio : f (,) = 4 et ( ) f, 3 = 3. Ecrire ue foctio récursive qui permet de calculer f ( xy, ) pour tout couple (, ) aturels. x y d etiers Graphiquemet parlat, l observatio des segmets rouges ous coduit à distiguer deux situatios pricipales selo que y est ul ou pas : y = (x état o ul), le couple qui précède le couple (,0) ( 0, x ). Das ce cas, o aura doc : f ( x,0) = f ( 0, x ) +. y (c est le cas gééral), le couple qui précède le couple (, ) ( x+, y ). Das ce cas, o aura : f ( x, y) = f ( x+, y ) +. Si 0 Si 0 A partir du cas gééral, o a l echaîemet : x est le couple x y est le couple ( x, y) ( x+, y ) ( x+, y )... ( x+ y, 0) ( 0, x+ y ) Féelo Saite-Marie 07-08 MP/PC-PC*/PSI* [5-7] Marc Lichteberg

Puis : ( 0, x+ y ) (, x+ y ) (, x+ y 3 )... ( x+ y,0) ( 0, x+ y ) E poursuivat de la sorte, o a les couples itermédiaires ( x+ y 3, 0), ( x y 4, 0) O fiit par aboutir au couple ( 0, 0 ) qui correspod à otre cas de base, écessaire pour programmer otre foctio récursive que ous baptisos simplemet um : def um(x,y): if x == 0 ad y == 0: retur 0 elif y == 0: retur + um(0,x-) retur + um(x+,y-) +, etc. A partir de la démarche ci-dessus, o peut doer ue défiitio explicite de la foctio f. E effet, l echaîemet : ( x, y) ( x+, y ) ( x+, y )... ( x+ y, 0) ( 0, x+ y ) ous doe : f ( x, y) = f ( x+ y,0) + y et f ( x+ y,0) = f ( 0, x+ y ) + d où : ( ) ( ) f x, y = f 0, x+ y + y+ D où : (, ) = ( 0, + ) + + = f ( x+ y, 0) + ( x+ y ) + y+ = f ( 0, x+ y ) + ( x+ y) + y+ ( ) ( ) ( ) ( ) ( ) ( ) f x y f x y y = f x+ y, 0 + x+ y + x+ y + y+ = f 0, x+ y 3 + x+ y + x+ y + y+ =... ( ) ( ) ( ) = f 0, 0 + + 3 +... + x+ y + x+ y + y+ = 0 3... ( ) ( x+ y)( x+ y+ ) = + + + + x+ y + y = + y Fialemet : (, ), (, ) ( x+ y)( x+ y+ ) x y f x y = + y Il reste à s assurer que la foctio f est bie ue bijectio de das Féelo Saite-Marie 07-08 MP/PC-PC*/PSI* [6-7] Marc Lichteberg

Exercice 6 Les tours? C est carré! Ecrire ue foctio Pytho permettat de placer tours sur u échiquier x de sorte qu aucue e soit e prise avec ue autre (le programme devra détermier toutes les cofiguratios possibles et o affichera chacue des cofiguratios. ATTENTION! Il y e a beaucoup! Et d ailleurs, vous savez très bie combie ). O peut adopter diverses approches. Le cœur du programme que je vous fouris sur votre page est la foctio récursive Place qui reçoit e argumet u etier correspodat au ombre de tours restat à placer. Le premier appel de Place se fait doc avec la taille de l échiquier comme argumet. U appel courat de Place est de la forme Place(N). O cherche alors à placer ue tour das la coloe -N. Pour cela, o balaie toutes les cases (i,-n) avec i variat de 0 à - et dès que l ue d elle est pas e prise o y place ue tour, o met esuite à jour l échiquier car cette ouvelle tour placée egedre des cases e prise et, efi, o appelle récursivemet Place avec N- comme argumet (si N est différet de bie sûr ). Avec cette approche, o maipule de ombreux tableaux umpy, tous de même dimesio. Pour fiir, il y a bie sûr! solutios. (le problème reveat à détermier toutes les permutatios de ; ). Féelo Saite-Marie 07-08 MP/PC-PC*/PSI* [7-7] Marc Lichteberg