Exercice 18
3 participants
Page 1 sur 1
Exercice 18
Je ne comprends pas la résolution...si quelqu'un peut m'éclairer...
merchi beaucoup
merchi beaucoup
Lise- Psychotrope
-
Nombre de messages : 328
Année d'étude : BA3
Section : Bioingénieur
Date d'inscription : 21/05/2010
Re: Exercice 18
Un triangle de pascal ressemble à ça :
La case au sommet vaut 1 et la valeur de chaque case vaut la somme de la case du dessus et de la case en haut à gauche, donc à priori on peut écrire :
C'est pour ça qu'on rajoute un ligne de zéros sur la ligne -1 (au dessus du triangle) avec :
(Je pense pas que le j > i soit obligatoire, ça stoppe juste la boucle un peu plus tôt et ça demande moins de calculs pour le même résultat)
La case au sommet vaut 1 et la valeur de chaque case vaut la somme de la case du dessus et de la case en haut à gauche, donc à priori on peut écrire :
- Code:
if(i == 0 and j == 0):
res = 1
else:
res = triangle_pascal(i-1,j) + triangle_pascal(i-1,j-1)
C'est pour ça qu'on rajoute un ligne de zéros sur la ligne -1 (au dessus du triangle) avec :
- Code:
elif((i == (-1)) or (j > i)):
res = 0
(Je pense pas que le j > i soit obligatoire, ça stoppe juste la boucle un peu plus tôt et ça demande moins de calculs pour le même résultat)
Benjamin- Dopamine
-
Nombre de messages : 105
Année d'étude : MA1
Section : Bioingénieur
Date d'inscription : 13/09/2008
Re: Exercice 18
Benjamin a écrit:Comme ça la récursion s'arrêtera une fois que la fonction regardera une case à la ligne -1 (elles valent toutes 0)
- Code:
elif((i == (-1)) or (j > i)):
res = 0
(Je pense pas que le j > i soit obligatoire, ça stoppe juste la boucle un peu plus tôt et ça demande moins de calculs pour le même résultat)
je comprends pas pq i==-1 et justement je pense que j>i c'est le plus important vu que ca concerne tout ce quil y a au dessus de la diagonale,...nn?
Lise- Psychotrope
-
Nombre de messages : 328
Année d'étude : BA3
Section : Bioingénieur
Date d'inscription : 21/05/2010
Re: Exercice 18
Chaque fois que la fonction s'appelle elle même, elle regarde à la ligne au dessus, donc pour éviter que la fonction s'appelle à l'infini sans jamais renvoyer de valeur, on lui dit de renvoyer zéro quand elle atteint la ligne -1 (sur le schéma de mon 1er post, c'est la ligne au dessus de la 1re valeur).
Le j > i fera que la fonction renverra 0 si elle passe au dessus de la diagonale. Si on le retire, la fonction remontera encore jusqu'à la ligne -1, qui renverra également 0. (au pire tu peux essayer de le retirer, on verra bien si la fonction marche encore ou pas)
Le j > i fera que la fonction renverra 0 si elle passe au dessus de la diagonale. Si on le retire, la fonction remontera encore jusqu'à la ligne -1, qui renverra également 0. (au pire tu peux essayer de le retirer, on verra bien si la fonction marche encore ou pas)
Benjamin- Dopamine
-
Nombre de messages : 105
Année d'étude : MA1
Section : Bioingénieur
Date d'inscription : 13/09/2008
Re: Exercice 18
est-ce qu´on pourrait aussi dire i < 0 au lieu de i==(-1) ??
chrisbinski- Dopamine
-
Nombre de messages : 86
Année d'étude : MA1
Section : Bioingénieur
Option : Agronomie - Option général
Date d'inscription : 03/12/2009
Page 1 sur 1
Permission de ce forum:
Vous ne pouvez pas répondre aux sujets dans ce forum