Appels et passages de paramètres¶
➥ Écrivez l’algorithme suivant :
def reutilisation(a: int, b: int, c: int) -> int: """ :pré-cond: a ≥ 0, b ≥ 0, c ≥ 0 :post-cond: d = xⁿ ou x est le plus petit nombre parmi a, b et c, et n est le plus grand nombre parmi a, b et c """
Écrivez cet algorithme sans utiliser l’opérateur
**
de Python. Vous pouvez cependant utiliser certaines des fonctions du chapitre précédent1, notamment plus_petit et puissance_n.➥ Soient les trois algorithmes (idiots) suivants :
def toto(a: int) -> int: """ :post-cond: ? """ n = 4 n = titi(a*2, n*a) b = 3*n - 2 return b def titi(a: int, b: int) -> int: """ :post-cond: ? """ n = tutu(a+b, a*2) c = n-a return c def tutu(a: int, b: int) -> int: """ :post-cond: ? """ if a < b: c = a else: c = b return c
On souhaite connaître la valeur obtenue après l’exécution de
toto(3)
. Pour cela, simulez l’exécution de cette instruction en représentant les environnement d’exécution des fonctions.➥ Calculer la somme des \(n\) premières factorielles :
def somme_fact(n: int) -> int: """ :pré-cond: n ≥ 1 :post-conf: sf = somme des i! pour i ∈ [0, n-1] """
On pourra bien sûr réutiliser la fonction factorielle définie au chapitre précédent… ou pas.
Indices
- 1
Pour trouver le plus grand nombre parmi trois, vous pouvez écrire une nouvelle fonction, ou réutiliser la fonction plus_petit en choisissant astucieusement les valeurs passées en paramètres.