Поэтому меня попросили определить матрицу как:
typedef vector<double> vec;
typedef vector<vec> matrix;
и на основании этого написать некоторые функции, такие как скалярное умножение, сложение и т. Д. c. Все, кроме возведения в степень, работает довольно хорошо, и я понятия не имею, что может вызвать проблемы в этой функции. Прежде всего я определил умножение как:
void multip(const matrix& A, const matrix& B, matrix& result){
int n = A.size();
for (int i = 0; i<n; i++){
for (int j = 0; j<n; j++){
for (int k = 0; k< n; k++){
result[i][j] += A[i][k] * B[k][j];
}
}
}
}
и на основании этого я хотел сделать рекурсивную (это обязательно) функцию возведения в степень следующим образом:
void expo(matrix& M, unsigned n){
if (n>0){
n--;
multip(M, expo(M, n), M);}
else{return;}
}
Это не работает, возвращая [Ошибка] Неправильное использование пустого выражения. Я понял, почему это не сработает, но я понятия не имею, как обойти это. Может ли кто-нибудь помочь мне с этой проблемой?