Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2005.03.27;
Скачать: 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 вся ветка

Текущий архив: 2005.03.27;
Скачать: CL | DM;

Наверх




Память: 0.47 MB
Время: 0.444 c
3-1109531308
Nikita--
2005-02-27 22:08
2005.03.27
как заперетить добаление(изменение) значений в столбец DBGrid a..


1-1110561555
avlan
2005-03-11 20:19
2005.03.27
Ошибка записи в файл


1-1110779776
Тульский
2005-03-14 08:56
2005.03.27
Установка системного времени


3-1109682392
Arazel
2005-03-01 16:06
2005.03.27
А как вообще каскадно удалять данные?


14-1109876476
Kolan
2005-03-03 22:01
2005.03.27
Как редактировать свою запись на форуме?