вот функция js
function determinant(m) {
if (m.length===1) {
return m[0][0];
}
if (m.length===2) {
return (m[0][0]*m[1][1]) - (m[0][1]*m[1][0]);
} else {
let BigArr = [];
for (let t=0; t<m[0].length; t++) {
let smallArr = [];
for(let r=1; r<m.length; r++) {
let arr = [];
for(let e=0; e<m[0].length; e++) {
if (e!=t) {
arr.push(m[r][e]);
}
}
smallArr.push(arr);
}
BigArr.push(determinant(smallArr));
}
let tmp = true;
let current = 0;
for (let t=0; t<m.length; t++) {
(tmp) ? current+=m[0][t]*BigArr[t] : current-=m[0][t]*BigArr[t];
tmp=!tmp;
}
return current;
}
};
let data = new Date();
let num = 11;
let arr = [];
for (let t=0; t<num; t++) {
arr.push([]);
for (let r=0; r<num; r++ ) {
arr[t][r] = Math.random()*100;
}
}
console.log(determinant(arr));
let d = new Date();
console.log(d - data);
вот с++
// 1.cpp : Этот файл содержит функцию "main". Здесь начинается и заканчивается выполнение программы.
//
#include <iostream>
#include <ctime>
using namespace std;
/*
function determinant(m) {
if (m.length===1) {
return m[0][0];
}
if (m.length===2) {
return (m[0][0]*m[1][1]) - (m[0][1]*m[1][0]);
} else {
let BigArr = [];
for (let t=0; t<m[0].length; t++) {
let smallArr = [];
for(let r=1; r<m.length; r++) {------------------------------
let arr = [];
for(let e=0; e<m[0].length; e++) {
if (e!=t) {
arr.push(m[r][e]);
}
}
smallArr.push(arr);
}
BigArr.push(determinant(smallArr));
}
let tmp = true;
let current = 0;
for (let t=0; t<m.length; t++) {
(tmp) ? current+=m[0][t]*BigArr[t] : current-=m[0][t]*BigArr[t];
tmp=!tmp;
}
return current;
}
};
*/
int determinant(int** m,const int length) {
if (length == 1) {
return m[0][0];
}
if (length == 2) {
return (m[0][0] * m[1][1]) - (m[0][1] * m[1][0]);
}
else {
int* BigM = new int[length];
int BigLength = 0;
for (int t = 0; t < length; t++) {
int** Buf = new int* [length];
for (int i = 0; i < length - 1; i++) {
Buf[i] = new int[length - 1];
}
// массив создан
int bufLength = 0;
for (int i = 1; i < length; i++) {
int shet = 0;
for (int w = 0; w < length; w++) {
if (w!=t) {
Buf[bufLength][shet] = m[i][w];
shet++;
}
}
bufLength++;
}
BigM[BigLength] = determinant(Buf, length - 1);
BigLength++;
for (int count = 0; count < length-1; count++)
delete []Buf[count];
delete[]Buf;
}
bool tmp = true;
int current = 0;
for (int t = 0; t < length; t++) {
(tmp) ? current += m[0][t] * BigM[t] : current -= m[0][t] * BigM[t];
tmp = !tmp;
}
delete[] BigM;
return current;
}
}
int** CoutArr(int** Array,int size)
{
for (int i = 0; i < size; i++) {
for (int r = 0; r < size; r++) {
cout << Array[i][r] << "\t";
}
cout << '\n';
}
return Array;
}
int main()
{
/*
[[2,4,2],[3,1,1],[1,2,0]]
*/
setlocale(LC_ALL,"Russian");
const int size = 11;
int start_time = clock(); // начальное время
int arr[size][size];
for (int t = 0; t < size; t++) {
for (int r = 0; r < size; r++) {
arr[t][r] = rand() % 100;
}
}
int *p[size];
for (int i = 0; i < size; i++) {
p[i] = arr[i];
}
CoutArr(p,size);
long long d = determinant(p, size);
cout << "\n" << d;
int end_time = clock(); // конечное время
int search_time = end_time - start_time;
cout << "\n\n" << search_time << "сек";
}
// Запуск программы: CTRL+F5 или меню "Отладка" > "Запуск без отладки"
// Отладка программы: F5 или меню "Отладка" > "Запустить отладку"
// Советы по началу работы
// 1. В окне обозревателя решений можно добавлять файлы и управлять ими.
// 2. В окне Team Explorer можно подключиться к системе управления версиями.
// 3. В окне "Выходные данные" можно просматривать выходные данные сборки и другие сообщения.
// 4. В окне "Список ошибок" можно просматривать ошибки.
// 5. Последовательно выберите пункты меню "Проект" > "Добавить новый элемент", чтобы создать файлы кода, или "Проект" > "Добавить существующий элемент", чтобы добавить в проект существующие файлы кода.
// 6. Чтобы снова открыть этот проект позже, выберите пункты меню "Файл" > "Открыть" > "Проект" и выберите SLN-файл.
собственно где разница в 2 раза???