Skip to content

Instantly share code, notes, and snippets.

@jasonLaster
Created April 4, 2012 01:27
Show Gist options
  • Save jasonLaster/2296962 to your computer and use it in GitHub Desktop.
Save jasonLaster/2296962 to your computer and use it in GitHub Desktop.
DERANGEMENT
%% CLOSED-FORM DERANGEMENT
function d = derangements(n)
numerator = (ones(1,n+1)*-1).^(0:n);
denomerator = arrayfun(@factorial, 0:n);
factorial_terms = numerator ./ denomerator;
d = sum(factorial(n) * factorial_terms)
%% RECURSIVE DERANGEMENT
function der = deraangements_rec(n)
der = NaN(1,n);
for m=0:n
d = factorial(m);
for k=1:m
d = d- nchoosek(m,k)*der(m-k+1);
end
der(m+1) = d;
end
der = sum(der);
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment