zoukankan      html  css  js  c++  java
  • 求n阶方阵的值(递归)

    若有n*n阶行列式A,则:

    |A|=A[1][1]*M[1][1]+A[1][2]*M[1][2]+...A[1][n]*M[1][n];其中M[1][i] 表示原矩阵元素A[1][i]的代数余子式;

    又M[1][i]是一个n-1阶的方正行列式,其值又可以由上诉公式推出.....;

    以此类推,直到n为1结束;再递归得到|A|;

    A[i][j]的代数余1子式M[i][j]=pow(-1, i+j)*C[i][j];C[i][j]为A[i][j]的余子式;

    代码:

     1 //***递归求n*n阶行列式的值
     2 int matrix(int n, int a1[MAXN][MAXN])
     3 {
     4     int b[10][10], sum=0;          //****b保存当前n*n阶行列式a的余子式
     5     if(n==1) return a1[0][0];     //****n为1时结束递归
     6     for(int i=0; i<n; i++)        //****通过循环求出当前行列式a[1][0]~a[1][n-1]的所有余子式
     7     {
     8         for(int j=0; j<n-1; j++)
     9         {
    10             int column=0;
    11             for(int k=0; k<n; k++)
    12             {
    13                 if(k==i) continue;
    14                 b[j][column++]=a1[j+1][k];  //**将a[0][i]的余子式保存到b数组中
    15             }
    16         }
    17         int flag=1;
    18         if(i&1) flag=-1;
    19         sum+=flag*a1[0][i]*matrix(n-1, b);  
    20     }
    21     return sum;
    22 }
  • 相关阅读:
    51单片机入门(三)
    51单片机入门笔记(二)
    51单片机入门笔记
    团队项目-需求分析报告
    团队项目-选题报告
    第一次结对编程作业
    第一次个人编程作业
    第一次博客作业
    tomcat的安装和配置
    循环
  • 原文地址:https://www.cnblogs.com/geloutingyu/p/5893656.html
Copyright © 2011-2022 走看看