Matrix_multi(A, Matrix_multi(A, A)) 에서 문제가 발생하는 이유는 다음과 같습니다
편의상 Matrix_multi2(A, Matrix_multi1(A, A)) 로 구분해서 설명하겠습니다.
Matrix_multi1(A, A) 는 올바른 값을 계산하며, 결과로 Z 를 반환합니다.
그 뒤 Matrix_multi2(A, Z) 를 호출하게 되는데
25~27번째 줄에서 Z배열을 0으로 초기화해 버립니다.
즉, Matrix_multi2(A, Z) 는 결국 Matrix_multi(A, 0) 이 되어버리면서, 결과가 0배열이 됩니다.
cocoon 3년 전
분할정복으로 로직은 맞게 짠거같은데 B가 3이상 일때 모든값이 0으로 출력됩니다.
예를들어
print_arr(Matrix_multi(A, solve(A, 1))); ==> A*A 까지는 정확하게 출력되는데
print_arr(Matrix_multi(A, solve(A, 2))); ==> A*A*A 부터는 모든값이 0이 출력됩니다.
즉, print_arr(Matrix_multi(A, Matrix_multi(A, A))); 에서부터 문제가 발생하는것 같습니다.
( print_arr(Matrix_multi(A, A));는 잘 출력됩니다. )
2차원 배열을
int(*Matrix_multi(int X[5][5], int Y[5][5]))[5]
이런식으로 리턴하면 안되는 것인지 뭐가 문제인지 몰라서 도움을 요청드리려 글 올립니다 ㅜㅜ