Recursividad

Necesito hacer una función recursiva en pascal para calcular el determinante de una matriz cuadrada, es para una tarea en la universidad.
Por favor, alguien que me ayude...

1 Respuesta

Respuesta
1
Te envío el código fuente de un programilla para hacer esto que he tenido que hacer sobre la marcha, pues no tengo el compilador para probarlo, pero creo que más o menos te funcionara. Ahí va...
PROGRAM DETERMINANTE;
CONST
DIMENSION = 5;
TYPE
Rango = 1..DIMENSION;
TipoMatriz = ARRAY [Rango, Rango] OF REAL;
VAR
Matriz : TipoMatriz;
PROCEDURE Cargar (VAR Tabla : TipoMatriz; TAMANO : INTEGER);
VAR
X, Y : INTEGER;
BEGIN
FOR X := 1 TO TAMANO
FOR Y := 1 TO TAMANO
BEGIN
WRITE ('Elemento (' + X + ', ' + Y + '): ');
READLN (Tabla[X, Y]);
END
END;
FUNCTION Determinante (VAR Tabla : TipoMatriz; Orden : INTEGER) : REAL;
VAR
CTabla : TipoMatriz;
X, I, J, Signo : INTEGER;
BEGIN
IF TAMANO = 1 THEN
Determinante := Tabla[1, 1]
ELSE
FOR X := 1 TO TAMANO
BEGIN
FOR I := 1 TO TAMANO - 1
FOR J := 2 TO TAMANO
IF (X < Y) THEN
CTabla [I, J-1] := Tabla [I, J]
ELSE
CTabla [I, J-1] := Tabla [I + 1, J];
IF Odd (X) THEN
Signo = -1
ELSE
Signo = 1;
D := D + Signo * Tabla [X, 1] * Determinante (CTabla, Orden - 1)
END
END;
BEGIN
Cargar (Matriz, DIMENSION);
Writeln ('El determinante de la Matriz introducida es: ', Determinante (Matriz, DIMENSION))
END.
Si tienes algún problemilla con el código ya me cuentas.

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas