我想利用向量计算行列式的值,但是每次运行都会出现“将一个无效参数传递给了将无效参数视为严重错误的函数”,我看了一下,我没有越界呀。所以请各位网友帮忙看一下我是哪里错了。
#include<iostream>
#include<vector>
using namespace std;
int Det(vector<vector<int>> v_det)
{
int n = v_det.size(); // 行列式的行和列
if (n == 1) return v_det[0][0];
if (n == 2) return (v_det[0][0] * v_det[1][1] - v_det[0][1] * v_det[1][0]);
int det = 0;
int a;
int i, j;
vector<vector<int>> v; // 余子式
vector<int> vec;
for (int k = 0; k < v_det.size(); k++)
{
/*给代数余子式赋值*/
for (i = 0; i < v_det.size() - 1; i++)
{
for (j = 0; j < v_det[0].size() - 1; j++)
{
if (j < k)
a = v_det[i][j];
else
a = v_det[i][j + 1];
vec.push_back(a);
}
v.push_back(vec);
vec.clear();
}
/*计算行列式的值,按第一行展开,递归求得*/
det += v_det[0][k] * Det(v) * (((2 + k) % 2) ? -1 : 1);
}
return det;
}
int main()
{
vector<vector<int>> v;
vector<int> vec;
int n = 1;
for (int i = 1; i <= 3; i++)
{
for (int j = 1; j <= 3;j++)
vec.push_back(n++);
v.push_back(vec);
vec.clear();
}
cout << Det(v);
return 0;
}
显示“将一个无效参数传递给了将无效参数视为严重错误的函数”
看看能不能不出现这个错误
24行改为
for (j = 0; j < v_det[i].size() - 1; j++)
都用c++ 开发了,为什么不使用 引用呢?