Bonjour,
J'essaie de faire une question de mon DM de NSI mais problème, je bloque. Aider moi svp :,)
Il faut faire la somme de (4,7,5,5,2,6,9,3,8,4) en utilisant une récursivité.
Voici la question:
"Implémenter une fonction récursive max_pyr(pyramide) retournant la somme maximale de la
pyramide."
Je n'y arrive pas j'ai essayé en créent cela:
def max_pyr(liste):
somme=0
if len(liste)<=0:
return somme
else:
somme+=liste[0]
liste.del[0]
return (max_pyr(liste),somme)
Mais rien cela ne marche pas...
Aider moi svp
Bonjour, Le 30/04/2021 Í 17:17, Olivier Miakinen a écrit dans le message <s6h72u$mo6$Â :
Méthode récursive : =======================================> def somme(liste): if len(liste) == 0: return 0 return liste[0] + somme(liste[1:]) ====================================== C'est exactement ce que j'aurais fait. Je suis d'accord que c'est pourri
de créer une nouvelle liste Í chaque fois mais, vu que c'est déjÍ pourri de le faire en recursif en Python, on n'est pas Í ça près. -- Benoit Izac
Bonjour,
Le 30/04/2021 Í 17:17, Olivier Miakinen a écrit dans le message
<s6h72u$mo6$1@cabale.usenet-fr.net>Â :
Méthode récursive :
=======================================> def somme(liste):
if len(liste) == 0:
return 0
return liste[0] + somme(liste[1:])
====================================== C'est exactement ce que j'aurais fait. Je suis d'accord que c'est pourri
de créer une nouvelle liste Í chaque fois mais, vu que c'est déjÍ pourri
de le faire en recursif en Python, on n'est pas Í ça près.
Bonjour, Le 30/04/2021 Í 17:17, Olivier Miakinen a écrit dans le message <s6h72u$mo6$Â :
Méthode récursive : =======================================> def somme(liste): if len(liste) == 0: return 0 return liste[0] + somme(liste[1:]) ====================================== C'est exactement ce que j'aurais fait. Je suis d'accord que c'est pourri
de créer une nouvelle liste Í chaque fois mais, vu que c'est déjÍ pourri de le faire en recursif en Python, on n'est pas Í ça près. -- Benoit Izac
raph14
Le vendredi 30 Avril 2021 à 20:09 par Benoit Izac :
Bonjour, Le 30/04/2021 Í 17:17, Olivier Miakinen a écrit dans le message
Méthode récursive : =======================================> def somme(liste): if len(liste) == 0: return 0 return liste[0] + somme(liste[1:]) ====================================== C'est exactement ce que j'aurais fait. Je suis d'accord que c'est pourri
de créer une nouvelle liste Í chaque fois mais, vu que c'est déjÍ pourri de le faire en recursif en Python, on n'est pas Í ça près. -- Benoit Izac
J'ai finis par réussir, voici le code pour ceux qu'ils le veulent :) Et merci encore pour votre aide. T = [4,7,5,5,2,6,9,3,8,4] def somme(liste,result=0): if len(liste)<=0: return result else: result+=liste[0] del liste[0] return somme(liste, result) Pour une pyramide contenant "4,7,5,5,2,6,9,3,8,4"
Le vendredi 30 Avril 2021 à 20:09 par Benoit Izac :
> Bonjour,
>
> Le 30/04/2021 Í 17:17, Olivier Miakinen a écrit dans le
> message
>
>
>> Méthode récursive :
>> =======================================> def somme(liste):
>> if len(liste) == 0:
>> return 0
>> return liste[0] + somme(liste[1:])
>> ====================================== C'est exactement ce que j'aurais fait.
>> Je suis d'accord que c'est pourri
>>
> de créer une nouvelle liste Í chaque fois mais, vu que
> c'est déjÍ pourri
> de le faire en recursif en Python, on n'est pas Í ça
> près.
>
> --
> Benoit Izac
J'ai finis par réussir, voici le code pour ceux qu'ils le veulent :)
Et merci encore pour votre aide.
T = [4,7,5,5,2,6,9,3,8,4]
def somme(liste,result=0):
if len(liste)<=0:
return result
else:
result+=liste[0]
del liste[0]
return somme(liste, result)
Pour une pyramide contenant "4,7,5,5,2,6,9,3,8,4"
Le vendredi 30 Avril 2021 à 20:09 par Benoit Izac :
Bonjour, Le 30/04/2021 Í 17:17, Olivier Miakinen a écrit dans le message
Méthode récursive : =======================================> def somme(liste): if len(liste) == 0: return 0 return liste[0] + somme(liste[1:]) ====================================== C'est exactement ce que j'aurais fait. Je suis d'accord que c'est pourri
de créer une nouvelle liste Í chaque fois mais, vu que c'est déjÍ pourri de le faire en recursif en Python, on n'est pas Í ça près. -- Benoit Izac
J'ai finis par réussir, voici le code pour ceux qu'ils le veulent :) Et merci encore pour votre aide. T = [4,7,5,5,2,6,9,3,8,4] def somme(liste,result=0): if len(liste)<=0: return result else: result+=liste[0] del liste[0] return somme(liste, result) Pour une pyramide contenant "4,7,5,5,2,6,9,3,8,4"
Benoit Izac
Bonjour, Le 30/04/2021 Í 21:04, raph a écrit dans le message  :
J'ai finis par réussir, voici le code pour ceux qu'ils le veulent :) Et merci encore pour votre aide. T = [4,7,5,5,2,6,9,3,8,4] def somme(liste,result=0): if len(liste)<=0: return result else: result+=liste[0] del liste[0] return somme(liste, result)
Mouais…
T = [4,7,5,5,2,6,9,3,8,4] def somme(liste,result=0):
... if len(liste)<=0: ... return result ... else: ... result+=liste[0] ... del liste[0] ... return somme(liste, result) ...
somme(T)
53
T
[] Oups ! -- Benoit Izac
Bonjour,
Le 30/04/2021 Í 21:04, raph a écrit dans le message
<bPmdnVxpYv1byRH9nZ2dnUU7983NnZ2d@giganews.com>Â :
J'ai finis par réussir, voici le code pour ceux qu'ils le veulent :)
Et merci encore pour votre aide.
T = [4,7,5,5,2,6,9,3,8,4]
def somme(liste,result=0):
if len(liste)<=0:
return result
else:
result+=liste[0]
del liste[0]
return somme(liste, result)
Mouais…
T = [4,7,5,5,2,6,9,3,8,4]
def somme(liste,result=0):
... if len(liste)<=0:
... return result
... else:
... result+=liste[0]
... del liste[0]
... return somme(liste, result)
...
Bonjour, Le 30/04/2021 Í 21:04, raph a écrit dans le message  :
J'ai finis par réussir, voici le code pour ceux qu'ils le veulent :) Et merci encore pour votre aide. T = [4,7,5,5,2,6,9,3,8,4] def somme(liste,result=0): if len(liste)<=0: return result else: result+=liste[0] del liste[0] return somme(liste, result)
Mouais…
T = [4,7,5,5,2,6,9,3,8,4] def somme(liste,result=0):
... if len(liste)<=0: ... return result ... else: ... result+=liste[0] ... del liste[0] ... return somme(liste, result) ...
somme(T)
53
T
[] Oups ! -- Benoit Izac
debimax
Le 30/04/2021 Í 18:46, Dominique a écrit :
Le 30/04/2021 Í 15:03, debimax a écrit :
bref je verrai bien ton exercice comme le maximum d'une somme 'des branches d'une pyramide par la programmation dynamique.
Bon, ben c'est décidé. Avec mes 6 mois de Python, mes 63 ans et mon BEPC comme valeur maximale de mes diplÍ´mes, je confesse n'avoir rien compris :-)
Bonsoir dominique https://fr.wikipedia.org/wiki/Programmation_dynamique?Pyramide%20de%20nombres#Pyramide_de_nombres ce qui fait un truc comme ça ```python p=[[3],[2,4],[2,7,5],[9,5,4,6]] def sommeMaxR(p,i=0,j=0): assert 0<=j<=i, 'Attention j doit être inférieur Í i' if i==len(p)-1: return p[i][j] else: return p[i][j]+max(sommeMaxR(p,i+1,j), sommeMaxR(p,i+1,j+1)) sommeMaxR(p) ``` jean claude
Le 30/04/2021 Í 18:46, Dominique a écrit :
Le 30/04/2021 Í 15:03, debimax a écrit :
bref je verrai bien ton exercice comme le maximum d'une somme 'des
branches d'une pyramide par la programmation dynamique.
Bon, ben c'est décidé. Avec mes 6 mois de Python, mes 63 ans et mon BEPC
comme valeur maximale de mes diplÍ´mes, je confesse n'avoir rien compris :-)
bref je verrai bien ton exercice comme le maximum d'une somme 'des branches d'une pyramide par la programmation dynamique.
Bon, ben c'est décidé. Avec mes 6 mois de Python, mes 63 ans et mon BEPC comme valeur maximale de mes diplÍ´mes, je confesse n'avoir rien compris :-)
Bonsoir dominique https://fr.wikipedia.org/wiki/Programmation_dynamique?Pyramide%20de%20nombres#Pyramide_de_nombres ce qui fait un truc comme ça ```python p=[[3],[2,4],[2,7,5],[9,5,4,6]] def sommeMaxR(p,i=0,j=0): assert 0<=j<=i, 'Attention j doit être inférieur Í i' if i==len(p)-1: return p[i][j] else: return p[i][j]+max(sommeMaxR(p,i+1,j), sommeMaxR(p,i+1,j+1)) sommeMaxR(p) ``` jean claude
Merci pour ce lien. C'est un niveau mathématique qui dépasse largement le mien.
ce qui fait un truc comme ça ```python p=[[3],[2,4],[2,7,5],[9,5,4,6]] def sommeMaxR(p,i=0,j=0): assert 0<=j<=i, 'Attention j doit être inférieur Í i' if i==len(p)-1: return p[i][j] else: return p[i][j]+max(sommeMaxR(p,i+1,j), sommeMaxR(p,i+1,j+1)) sommeMaxR(p)
Dès que je suis dans le TGV (dans 1 semaine), je dépouille ton script ligne Í ligne. Je comprendrai mieux. Bien Í toi, -- Dominique Courriel : dominique point sextant ate orange en France Esto quod es
Merci pour ce lien. C'est un niveau mathématique qui dépasse largement
le mien.
ce qui fait un truc comme ça
```python
p=[[3],[2,4],[2,7,5],[9,5,4,6]]
def sommeMaxR(p,i=0,j=0):
assert 0<=j<=i, 'Attention j doit être inférieur Í i'
if i==len(p)-1:
return p[i][j]
else:
return p[i][j]+max(sommeMaxR(p,i+1,j), sommeMaxR(p,i+1,j+1))
sommeMaxR(p)
Dès que je suis dans le TGV (dans 1 semaine), je dépouille ton script
ligne Í ligne. Je comprendrai mieux.
Bien Í toi,
--
Dominique
Courriel : dominique point sextant ate orange en France
Esto quod es
Merci pour ce lien. C'est un niveau mathématique qui dépasse largement le mien.
ce qui fait un truc comme ça ```python p=[[3],[2,4],[2,7,5],[9,5,4,6]] def sommeMaxR(p,i=0,j=0): assert 0<=j<=i, 'Attention j doit être inférieur Í i' if i==len(p)-1: return p[i][j] else: return p[i][j]+max(sommeMaxR(p,i+1,j), sommeMaxR(p,i+1,j+1)) sommeMaxR(p)
Dès que je suis dans le TGV (dans 1 semaine), je dépouille ton script ligne Í ligne. Je comprendrai mieux. Bien Í toi, -- Dominique Courriel : dominique point sextant ate orange en France Esto quod es