Écrire une fonction python récursive :
Paramètre d'entrée | Une liste de nombres. |
---|---|
Valeur renvoyée | La valeur de l'élément minimum de la liste. |
- Définition récursive
- un premier code
- avec accumulateur
- Cas de base : lorsque la liste ne contient qu'un seul élément, le minimum est la valeur de cet élément.
- Dans les autres cas : le minimum des éléments de L = [a0 , a1 , a2 , ..., an] est la plus petite valeur entre le minimum des éléments de la liste L'= [a0 , a1 , a2 , ..., an-1] et la valeur de l'élément an.
Une solution Python :
def minimum(a,b) :
""" retourne le plus petit des nombres a et b."""
if a < b : return a
else : return b
def minimumListe(L) :
""" L : liste non vide.
Retourne un des éléments de plus petite valeur de la liste."""
if len(L) == 1 : return L[0]
else : return minimum(L[0], minimumListe(L[1:]))
print(minimumListe([2,8,-2,45,74,0]))
On peut également décider de définir le cas de base sur une liste vide :
def minimum(a,b) :
""" retourne le plus petit des nombres a et b."""
if a < b : return a
else : return b
def minimumListe(L) :
""" L : liste non vide.
Retourne un des éléments de plus petite valeur de la liste."""
if L == [] : return float('inf')
else : return minimum(L[0], minimumListe(L[1:]))
print(minimumListe([2,8,-2,-7,45,74,0]))
ou encore :
def minimum(a,b) :
""" retourne le plus petit des nombres a et b."""
if a < b : return a
else : return b
def minimumListe(L) :
""" L : liste non vide.
Retourne un des éléments de plus petite valeur de la liste."""
if L == [] : return float('inf')
*tete, queue = L
return minimum(queue, minimumListe(tete))
print(minimumListe([2,8,-2,-7,45,74,0]))
Une solution Python avec accumulateur :
def minimumListe(L) :
""" L : liste non vide.
Retourne un des éléments de plus petite valeur de la liste."""
def miniL(i, m) :
if i == len(L) : return m
else :
m = m if m < L[i] else L[i]
return miniL(i+1 , m )
return miniL(0,L[0])
print(minimumListe([2,8,-2,45,74,0]))