首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >递归分治技术

递归分治技术
EN

Stack Overflow用户
提问于 2018-02-25 14:59:06
回答 1查看 105关注 0票数 1
代码语言:javascript
复制
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大小后显示此错误

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 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

票数 -1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/48971063

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档