Czy ktoś widzi tu błąd zwłaszcza przy rekurencyjnym wywołaniu funkcji?
Kod
function Wyznacznik ($macierz, $wymX, $wymY)
{
    // Ustawiamy zmienna zawierajaca wynik
    $wynik = 0;
    
    // Jesli macierz jest jednoelementowa, to wyznacznik jest rowny temu
    // elementowi. A zatem nie ma co robic tylko zwracamy wartosc tego elementu
    if ($wymX == 1 && $wymY == 1) return $macierz[0][0];
    
    // Glowna petla. Przesuwamy sie po kolumnach naszej macierzy
    for($a = 0; $a < $wymY; $a++)
    {
        // Zmienna znaku
        $znak = 1;
        // Gdy jestesmy w nieparzystym wierszu znak jest ujemny
        if( $a % 2!=0) $znak = -1;
        
        // Wyliczamy mnoznik
        $mnoznik = $macierz[0][$a];
        
        // Deklarujemy tablice pomocnicze
        $m = array();
        $m2 = array();
        
        // Jedziemy po wierszach macierzy
        for($b=1;$b < $wymX; $b++)
        {
            // Zmienna pomocnicza
            $d = 0;
            // Jedziemy po kolumnach, ponownie, z tym ze konczymy na jednej kolumnie wczesniej
            // niz w przypadku glownej petli.
            for($c=0; $c < count($macierz[$b])-1; $c++)
            {
                if($c==$a) $d = 1;
                // Twprzymy wektor liczb z macierzy
                $m2[$c] = $macierz[$b][$c+$d];
            }
            // Przypisujemy wektor do macierzy tymczaswoej
            $m[$b-1]= $m2;
            
            // Czyscimy wektor pomocniczy
            $m2 = array();
        }
        // Wywoljuemy rekurencyjnie funkcje Wyznacznik aby policzyc podwyznaczniki.
        $wynik += $znak * $mnoznik * Wyznacznik($m, count($m), count($m[0]));
    }
    // Zwracamy wynik
    echo("$wynik");
    return $wynik;

}