Ver Mensaje Individual
  #1  
Antiguo 28-09-2015
jocaro jocaro is offline
Miembro
 
Registrado: sep 2011
Posts: 104
Reputación: 15
jocaro Va por buen camino
Array dinámico bidimensional en procedimiento recursivo

Buenos días

A ver si alguien me puede ayudar

Si en un procedimiento recursivo defino una matriz dinámica bidimensional, ¿en cada recursión estaré creando una matríz dinámica bidimensional distinta?,
o todas apuntarán a la misma zona de memoria. En el caso de que el comportamiento sea éste último, como podria conseguir una matriz por cada ejecución
del procedimiento

Un ejemplo somero del código sería el siguiente:

Código Delphi [-]
// Se pasa un elemento de la matriz creada en el nivel de recursión desde el que se llama                                    
procedure TSDIAppForm.ProcedimientoRecursivo(Clave: Integer; Dato: Integer);                                
var

  iBucle: Integer;
  iEleMat: Integer;                                 // Elementos de la matriz
  mdHijos: array of array of integer;          // Matriz de elementos con hijos

begin

  iEleMat := 0

  // Bucle de carga de la matriz. En cada recursión podrá tener un tamaño diferente

  Tabla.Locate('ClaPad', Clave, []);

  while (Tabla.fieldByName('ClaPad').asinteger = Clave)
  begin
    iEleMat := iEleMat + 1;
    SetLength( mdHijos, iEleMat, 2 );
    mdHijos[ iEleMat - 1, 0 ] := Tabla.fieldByName('Clave').asinteger;
    mdHijos[ iEleMat - 1, 1 ] := Tabla.fieldByName('Clapad').asinteger;
  end;

  Tabla.Next;

 end;

  // Hacemos una recursión por cada uno de los elementos de la matriz en este nivel

  for iBucle := low(mdHijos) to high(mdhijos) do
  begin
    ProcedimientoRecursivo( mdHijos[ iBucle, 0 ], mdHijos[ iBucle, 1 ] );
  end;

end;

Gracias de antemano.

Última edición por jocaro fecha: 28-09-2015 a las 11:47:17. Razón: Detallar un poco mas la pregunta
Responder Con Cita