C : rekursiv definierte Programm zu berechnen, Determinante einer matrix
Kann ich nicht verstehen, warum dieses Programm ist die Produktion von falschen Faktor Werte für die Matrizen. Dieses Programm nutzt die rekursiven Aufrufe der Funktion func() wandelt das argument matrix, um seine kleinere, die dann letztendlich reduziert auf ein einziges element. Bitte um Hilfe, Was ist der Fehler in diesem code..??
#include<stdio.h>
#include<math.h>
void display_(int arr[][4])
{
int i,j;
putchar('\n');
for(i=0;i<4;i++)
{for(j=0;j<4;j++)
printf("%d\t",arr[i][j]);
printf("\n");
}
}
int func(int arr[][4],int i,int j,int order)
{
if(order==1)
return arr[0][0];
return(pow(-1,i+j)*arr[i][j]*func(arr,i+1,j+1,order-1));
}
int main()
{
int i,j,matrix[4][4];
printf("\nEnter the elements to the matrix : ");
for(i=0;i<4;i++)
for(j=0;j<4;j++)
scanf("%d",&matrix[i][j]);
display_(matrix);
printf("\nDeterminant : %d",func(matrix,0,0,4));
}
Sollte das Etikett C und nicht C++. Es gibt keine C++ im code, und Sie würde nicht schreiben Sie es, wie dies in C++.
Auch, in Fällen wie diesem,
Sorry sir, Sie haben Recht..
Auch, in Fällen wie diesem,
func
wäre viel klarer, wenn Sie verwendet nur eine einzige return
, mit dem ternären operator.Sorry sir, Sie haben Recht..
InformationsquelleAutor pacman7845421 | 2013-10-17
Du musst angemeldet sein, um einen Kommentar abzugeben.
Dass ist nicht die richtige Formel. Sehen hier.
Tun, die Sie implementieren möchten, die Laplace-Formel? In diesem Fall müssen Sie eine Summe über alle Zeilen und dann rekursiv die Berechnung der minderjährigen. Das sind die Determinanten der matrix, die aus A durch entfernen der i-TEN Zeile und der j-TEN Spalte. Das ist, wo Sie Ihre Funktion rekursiv.
Oder wollen Sie die Umsetzung der Leibniz-Formel? In diesem Fall müssen Sie eine Summe und iterieren über alle möglichen Permutationen und dann ein Produkt, wo Sie die Iteration über die Anzahl der Zeilen (oder Spalten). Aber Sie brauchen sich keine Rekursion gibt.
Beachten Sie, dass es gibt durchaus ein paar ähnliche Fragen hier auf, SO z.B. hier oder hier.
InformationsquelleAutor Albert