Вниз
Скачать: CL | DM;

Подмогните студенту! Рекурсия.   Найти похожие ветки 

 
MGWarlock ©   (2005-03-10 15:14) [0]

Недавно столкнулся с такой вещью, как рекурсия. Решил написать программу нахождения определителя матрицы. Написал. Но вот работает эта программа как-то странно. Определитель вечно равен нулю. Ошибку в своем коде я найти не смог. Подскажите правильный алгоритм, или хотя бы ткните пальцем в то место, где я облажался.



TMatrix= array [1..100,1..100] of integer;
...

{Находение Минора матрицы NxN по первой строке и столбцу "Stolb"}

Function GetMinor(Var B: TMatrix; N, Stolb: integer): TMatrix;
VAR i,j,row,col: integer;
   Buf: TMatrix;
Begin
 col:=1;
 For j:=1 to N do
 Begin
   If j<>Stolb then
   Begin
     For i:= 2 to N do
     Begin
       Buf[i-1,col]:= B[i,j];
     End;
     col:=col+1;
   End;
 End;
Result:= Buf;
End;

{Нахождение определителя матрицы NxN}
Function Determinant(Var A: TMatrix; N: integer) : integer;
Var i: integer;
   Buf: TMatrix;
   Det: integer;
Begin
 Det:=0;
 If N=2 then det:= A[1,1]*A[2,2]-A[1,2]*A[2,1] else
 Begin
   For i:=1 to N do
   Begin
     Buf:= GetMinor(A,N,i);
     Det:= Det+ Determinant(Buf,N-1);
   End;
 End;
End;


 
Fay ©   (2005-03-10 15:28) [1]

См. [1]


 
GuAV ©   (2005-03-10 15:28) [2]

Похоже, в GetMinor всё неправильно. И где умножение минора на элемент и знак ?

Кстати, IMHO лучше не сдвигать столбцы, а создать параметр рекурентной фции ExcludeColumns типа set of
1..100; (я так решал, ещё на паскале :) )

Чтобы найти и выявить ошибки, кроме F9, нужно исспользовать ещё F5, F7, F8


 
MGWarlock ©   (2005-03-10 16:10) [3]

Огромное спасибо. Исправлюсь.



Страницы: 1 вся ветка

Скачать: CL | DM;



Память: 0.45 MB
Время: 0.025 c
8-1101926747
Angela_
2004-12-01 21:45
2005.03.27
Фильтры bmp-изображения


14-1109918703
leonidus
2005-03-04 09:45
2005.03.27
Ищу програмку менеджер документов Microsoft Office


4-1107982050
Massiv
2005-02-09 23:47
2005.03.27
Чтение LocalMachine KEY


14-1110455760
mmms
2005-03-10 14:56
2005.03.27
Холодильник молотит без остановки, есть ли спецы?


1-1110365493
markers
2005-03-09 13:51
2005.03.27
Файлы/Шифровка




   Наверх