以下代码使用递归计算行列式。
对于带有O(n)的“for”循环,我们再次用n-1个元素调用该函数,所以每次调用函数时我们都要乘以? 像O(n) O(n-1) ...... * O(1)?
function y = detm(A)
n = length(A);
y = 0;
if n == 1
y = A(1,1);
elseif n == 2
y = A(1,1).*A(2,2)-A(1,2).*A(2,1);
elseif n > 2
for i = 1:n
temp = A(2:end,:);
temp(:,i) = [];
if mod(i,2) == 0
y = y - A(1,i)*detm(temp);
else
y = y + A(1,i)*detm(temp);
end
end
end
end