Ah non !
En classe, on apprend que pour A = B.C la valeur de A[i][j] est égale à la somme de B[i][k].C[k][j] pour k=1 à n.
Qui a parlé de boucle là ?
Soit, à la limite, on peu considérer que le "somme pour k de ... à ..." ressemble à une boucle, mais il n'y a pas de notion d'ordre contrairement à une boucle !
Par contre, les deux autres boucles, tu les as ajouté parce que c'est ta manière de penser en impératif.
----------
En fonctionnel, tu peux faire ca de la manière suivante (je prend pas la syntaxe CAML puisqu'elle fait peur)
soit les deux fonction B et C de [[1,n]]^2 dans R qui représentent les deux matrices du même nom (une fonction, une matrice, c'est la même chose finalement ...)
// calcule B[i][k].C[k][j] (on aurait pu en faire une fonction anonyme, mais ça fait peur ...
prod(B,C,i,j,k) := B(i,k)*C(k,j)
// la fonction A qui représente la matrice du même nom
// sum qui est classiquement fourni par une bibliothèque prend en paramètre deux entier (les bornes) et une fonction à un paramètre (prod dont on a fixé tous les paramètres sauf un)
A(i,j) := sum(1,n,prod(B,C,i,j))
[^] # Re: Dommage...
Posté par Julien . En réponse à la dépêche OCaml 3.10.0 est sorti. Évalué à 1.
En classe, on apprend que pour A = B.C la valeur de A[i][j] est égale à la somme de B[i][k].C[k][j] pour k=1 à n.
Qui a parlé de boucle là ?
Soit, à la limite, on peu considérer que le "somme pour k de ... à ..." ressemble à une boucle, mais il n'y a pas de notion d'ordre contrairement à une boucle !
Par contre, les deux autres boucles, tu les as ajouté parce que c'est ta manière de penser en impératif.
----------
En fonctionnel, tu peux faire ca de la manière suivante (je prend pas la syntaxe CAML puisqu'elle fait peur)
soit les deux fonction B et C de [[1,n]]^2 dans R qui représentent les deux matrices du même nom (une fonction, une matrice, c'est la même chose finalement ...)
// calcule B[i][k].C[k][j] (on aurait pu en faire une fonction anonyme, mais ça fait peur ...
prod(B,C,i,j,k) := B(i,k)*C(k,j)
// la fonction A qui représente la matrice du même nom
// sum qui est classiquement fourni par une bibliothèque prend en paramètre deux entier (les bornes) et une fonction à un paramètre (prod dont on a fixé tous les paramètres sauf un)
A(i,j) := sum(1,n,prod(B,C,i,j))