A continuación voy a explicar como se multiplican dos matrices de forma recursiva en C.

Además esta técnica nos servirá para pasar funciones iterativas que usen bucles for (y otros) a forma recursiva.

Empezamos…

Primero tenemos el siguiente código en C para multiplicar matrices de forma iterativa:

for(i=0;i
for(j=0;j
for(k=0;k
mC[i][j]+=mA[i][k]*mB[k][j];
}
}
}
//

Vamos a llamar a los bucles primero segundo y tercero leyendo de arriba a abajo, y siendo mA y mB las matrices a multiplicar y mC la matriz resultado.

En las funciones, a y b son el tamaño de la matriz.

El primero for se traduciría así:

void primerFor(matrices, a, b, i){

if(i==a);

else{

segundoFor(matrices, a, b, i, 0);

primerFor(matrices, a, b, i++);

}

}

Si miramos el primer for, la condición para salirnos del bucle es que i sea igual (menor estricto) al tamaño de la matriz, pues ese será nuestro caso base, es decir, i==a.

Al final del bucle incrementamos i, pues eso mismo hacemos en nuestra función con una llamada recursiva.

Antes de eso, deberemos llamar a la seguna función recursiva, la cual sería creada del mismo modo.

void segundoFor(matrices, a, b, i, j){

if(i==a);

else{

tercerFor(matrices, a, b, i, j, 0);

segundoFor(matrices, a, b, i, j++);

}

}

Como se puede ver, cada vez que llemamos a la siguiente función (en definitiva pasamos al siguiente for) pasamos el valor cero inicial de comienzo del bucle.

La tercera y última función sigue el mismo patrón, pero en vez de llamar a una supuesta cuarta función (si hubiera 4 así sería), realizamos la operación que vamos buscando.

void tercerFor(matrices, a, b, i, j, k){

if(i==a);

else{

mC[i][j]+=mA[i][k]*mB[k][j];

tercerFor(matrices, a, b, i, j, k++);

}

}

Este método es una buena aplicación de como pasar funciones iterativas a recursivas.

One Response to “Pasar funciones iterativas a recursivas en C.”
  1. eddy says:

    necesito me ayudes con una funcion recursiva de una matriz de cuatro por cuatro para calcular su determinante
    gracias

  2.  
Leave a Reply


   Beat diabetes   Diabetes diet