码迷,mamicode.com
首页 > 编程语言 > 详细

利用递归与行列式展开定理求行列式的值(数组指针版)

时间:2016-03-13 06:12:56      阅读:156      评论:0      收藏:0      [点我收藏+]

标签:

今天用数组指针改写了一下行列式求值程序,代码:

 1 #include <iostream>
 2 #include <cmath>
 3 using namespace std;
 4 int main()
 5 {
 6     int rank;
 7     void setDet(double*,int);
 8     double valDet(double*,int);
 9     cout<<"输入行列式的阶数:";
10     cin>>rank;
11     double *DetPtr=new double[rank*rank];
12     setDet(DetPtr,rank);
13     cout<<"行列式的值为:"<<valDet(DetPtr,rank)<<endl;
14     return 0;
15 }
16 void setDet(double *detPtr,int rank)
17 {
18     cout<<"输入行列式:"<<endl;
19     int m=rank*rank;
20     for(int i=0;i<m;i++)
21         cin>>detPtr[i];
22 }
23 double valDet( double* detPtr, int rank)
24 {
25     double val=0;
26     if(rank==1) return detPtr[0];
27     for(int i=0;i<rank;i++)                 //计算余子式保存在nextDetPtr[]中 
28     {
29         double *nextDetPtr=new double[(rank-1)*(rank-1)];
30         for(int j=0;j<rank-1;j++)
31             for(int k=0;k<i;k++)
32                 nextDetPtr[j*(rank-1)+k]=detPtr[(j+1)*rank+k];
33         for(int j=0;j<rank-1;j++)
34             for(int k=i;k<rank-1;k++)
35                 nextDetPtr[j*(rank-1)+k]=detPtr[(j+1)*rank+k+1];
36         val+=detPtr[i]*valDet(nextDetPtr,rank-1)*pow(-1.0,i);
37     }
38     return val;
39 }

 

利用递归与行列式展开定理求行列式的值(数组指针版)

标签:

原文地址:http://www.cnblogs.com/shuiming/p/5271091.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!