Exercices#
Exercice 1#
On donne la fonction suivante:
Expliquer pourquoi la fonction
ordre(n)
est récursive.Que renvoie l’appel
ordre(4)
?Que se passe-t-il si on change la dernière instruction par
return str(n)+ordre(n-1)
?
Exercice 2#
On donne la fonction suivante:
Expliquer pourquoi la fonction
compte(n)
est récursive.Que renvoie l’appel
compte(5)
?Que se passe-t-il si on change la dernière instruction par
return 1+compte(n-2)
?
Exercice 3#
On donne le script suivant et la table de caractères ASCII:
On rappelle que la fonction Python chr(n)
prend en argument un nombre entier n
en écriture décimale et renvoie le caractère ASCII associé.
Quelle est la valeur renvoyée par la commande
chr(65)
?Quel est l’affichage à l’issu du script ?
Écrire la fonction récursive
affiche_recursif
renvoyant le même résultat que le script ci-dessus.
Exercice 4#
Lorsqu’on effectue une remise de 10% sur un prix, cela revient à multiplier ce prix par la valeur \(1-10/100\).
On veut calculer des baisses successives de 10% sur une valeur, le nombre de remises étant défini à l’avance.
Calculer trois remises successives de 10% sur un prix de 100 €.
Montrer en détaillant le calcul qu’un algorithme récursif peut s’appliquer.
Écrire un script itératif qui calcule \(n\) remises successives de 10% sur un prix. On utilisera les variables
prix
etn
. La variableprix
contiendra la valeur finale.Vérifier votre script avec un prix de 100 pour \(n=3\) remises.
Écrire la fonction récursive
remise_successive
qui calcule \(n\) remise de 10% sur un prix défini à l’avance.
Exercice 5#
En mathématiques, pour trouver le plus grand commun diviseur de 2 nombres entiers, on applique l’algorithme d’Euclide, donné ci-dessous en python:
S’agit-il d’une fonction récursive ? Pourquoi ?
Que calcule l’opération \(a\%b\) dans la dernière ligne de la fonction ?
Quelle est la valeur de \(12\%7\) ?
Que se passe-t-il si \(a\) est strictement inférieur à \(b\) ?
Quelle est la signification des instructions aux lignes 2 et 3 de la fonction ?
Donner les différentes phases d’exécution de l’appel
pgcd(28,42)
.
Exercice 6#
Calculer :
\(1 \times 2\)
\(1 \times 2 \times 3\)
\(1 \times 2 \times 3 \times 4\)
\(1 \times 2 \times 3 \times 4 \times 5\)
Les produits précédents sont des factorielles que l’on va noter
factorielle(n)
oùn
est un nombre entier.Quelle relation peut-on écrire entre
factorielle(3)
etfactorielle(2)
?Quelle relation peut-on écrire entre
factorielle(4)
etfactorielle(3)
?Pour tout nombre entier \(n\), écrire une relation entre
factorielle(n)
etfactorielle(n-1)
.
Écrire la fonction récursive
factorielle(n)
qui prend en paramètre un nombre entier \(n\) et renvoie la valeur de sa factorielle. On admet quefactorielle(1)
renvoie la valeur 1.
Exercice#
Expliquer quel est le résultat renvoyé par le code suivant:
Écrire une fonction binaire qui prend en paramètres un entier relatif \(r\) et un entier naturel \(n\) strictement positif, et qui renvoie la représentation en machine de \(r\) sur \(n\) bits. La méthode utilisée est celle du complément à \(2\).
Note
Déterminer l’écriture binaire sur \(n\) bits d’un nombre négatif \(r\) revient à déterminer l’écriture binaire du nombre positif \(r+2^{n}\) (méthode du complément à 2)
Exemple de l’écriture binaire du nombre \(-35\) sur 7 bits est \(-35+2^{7}=93=1011101_{2}\).
Exercice#
Saisir le programme ci-dessous et le tester:
Donner une version récursive de ce code et vérifier qu’il donne bien le même résultat.
Exercice#
La fonction fibonacci(n)
, qui doit son nom au mathématicien Leonardo Fibonacci, est définie récursivement, pout tout entier \(n\), de la manière suivante:
Calculer fibonacci(5).
Écrire en python cette fonction
fibonacci
.