이 프로그램이 왜 행렬의 행렬식 값을 잘못 생성하는지 이해할 수 없습니다. 이 프로그램은 func() 함수에 대한 재귀 호출을 사용하여 인수 행렬을 미성년자로 변환 한 다음 궁극적으로 단일 요소로 축소합니다. 제발,이 코드의 오류는 무엇입니까?C : 재귀 적으로 정의 된 행렬의 행렬을 계산하는 프로그램
#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));
}
레이블은 C++가 아니고 C이어야합니다. 코드에는 C++이 없으므로 C++에서는 이와 같이 작성하지 않을 것입니다. –
또한, 이와 같은 경우에,'func'는 삼항 연산자로 하나의'return' 만 사용하면 훨씬 더 명확 해집니다. –
죄송합니다. 당신이 맞습니다. – pacman7845421