int **matMult(int **mat1,int **mat2,int **res,int N){
static int i=0,j=0,k=0;
if(i>=N)
return 0;
else if(i<N)
{
if(j<N)
{
if(k<N)
{
res[i][j]+=mat1[i][k]*mat2[k][j];
k++;
matMult(mat1,mat2,res,N);
}
k=0;
j++;
matMult(mat1,mat2,res,N);
}
j=0;
i++;
matMult(mat1,mat2,res,N);
}
return res;
}输出:输入N: 64分段故障的值(核心转储)
64大小后显示此错误
发布于 2018-02-25 20:55:35
代码本身没有明显的问题。如果它适用于较小的N,则可以怀疑N=64的堆栈溢出。
使用递归进行矩阵乘法是众所周知的方法:
Matrix Multiplication
Matrix multiplication using the Divide and Conquer paradigm
对于实用的C解决方案,请检查:
Matrix Multiplication using divide and conquer approach
Strassen-recursive-matrix-multiplication.c
顺便说一下,你的代码和这里发布的非常相似:C Program to Perform Matrix Multiplication using Recursion。
https://stackoverflow.com/questions/48971063
复制相似问题