Informaticienne
$OJRULWKPLTXH HW SURJUDPPDWLRQ
/D UpFXUVLYLWp
,QWURGXFWLRQ
Ecrire les définitions récursives des fonctions suivantes, puis écrivez-les en langage C : add( a, b ) = a + b ; prod( a, b ) = a * b.
Soit le programme suivant : void recursive(){ int i ; recursive() ; } Expliquez pourquoi l’exécution de ce programme est dangereuse. En déduire une règle pour les programmes récursifs.
0LURLU
Ecrire une fonction récursive affichant une phrase dans l' ordre inverse de celle reçue en argument.
3DOLQGURPH
Un palindrome est une chaîne de caractères pouvant être lue dans les deux sens (par exemple "été" est un palindrome). Ecrire une fonction récursive déterminant si une chaîne reçue en argument est un palindrome.
______________________________________________________________________________________________ 1 / 15
Travaux dirigés
$OJRULWKPLTXH HW SURJUDPPDWLRQ
/HV WRXUV GH +DQRw
On dispose de n pièces circulaires, percées d’un trou, de tailles différentes, et de trois piquets nommés p, q, r, sur lesquels les pièces peuvent s’enfiler ; il est cependant interdit de poser une pièce sur une autre plus petite, et une seule pièce peut être déplacée à la fois ; au départ, les pièces se trouvent toutes sur le piquet p ; le but est de les amener toutes sur le piquet r, le piquet q servant d’intermédiaire.
p
q
r
Pour résoudre un tel problème, il est souvent utile de chercher une décomposition en problèmes plus simples. Par exemple, si on est capable de passer de la situation ci-dessus à la situation suivante :
p
q
r
Il ne restera plus qu’à résoudre le passage de n-1 pièces du piquet q au piquet r avec p comme piquet intermédiaire.
/HV ODE\ULQWKHV
Soit le labyrinthe suivant où les murs sont représentés par des caractères *, les chemins par des caractères blancs et le point d’arrivée par le caractère A : * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *