Ok, nous allons jeter un coup d'oeil. La formule est la actuall intérieure de boucle:
for(x=0;x<=q;++x)
{
if((x==0)||(q==0))
bin=1;
else
bin=(bin*(q-x+1))/x;
printf("%6d",bin);
}
q représente la rangée du triangle de Pascal, à partir du haut. x représente le numéro de l'élément dans la rangée. Comme dans la rangée 1, il y aura 1 élément dans la rangée 2 deux éléments. Donc le for(x=0;x<=q;++x)
a du sens.
maintenant à la clause if if((x==0)||(q==0))
. Si x vaut 0 que nous sommes sur le côté gauche du triangle ou au début de la ligne du triangle, ce qui est toujours 1. Si q vaut 0 que obviosly, c'est la première rangée du triangle (en commençant par le haut) qui est toujours 1. Puisqu'il y a le seul élément.
maintenant à la clause else, qui est probablement la partie la plus intéressante:
else
bin=(bin*(q-x+1))/x;
La première fois que nous obtenons dans cette clause est après q est 0 et x est 0 au début de la boucle et a été défini sur 1. Ceci est important car bin a été défini en dehors de la boucle for et conserve la valeur de l'itération à l'itération. Alors maintenant x est 2 et bin est 1. Encore une fois q représente le numéro de ligne et la longueur de la ligne. Pour comprendre cela, vous devriez regarder la page wikipedia du pascal's triangle. Surtout la partie avec
Calculer une ligne ou diagonale par lui-même
vous y trouverez la formule écrite à nouveau. Le mot important ici sont des factoriels. En regardant également l'article sur le pascal matrix pourrait être utile. Je vais essayer de l'expliquer mais (je déteste quand quelqu'un dit ça) vous devez le voir. Jetez un oeil aux diagonales du triangle pascal et à la partie interne de la formule (q-x+1)
. Calculez maintenant les valeurs que vous obtiendrez toujours pour chaque diagonale. Vous voyez un motif? J'espère que les choses commencent à avoir du sens.
Je ne comprends pas vraiment la question, que recherchez-vous exactement? –
@ inf.ig.sh: Je suis incapable de comprendre la la formule pour le calcul de bin –