4
%Question 1a %A recursive function is a function which calls itself upon execution. %An example will be calculation of n! using a recursive function. function out = recfact(n) %Assume n is a positive integer if n == 1 out = 1; else out = n* recfact(n-1); end end %Question 1b function result = f1(mat1,mat2) result = (mat2./mat1) + mat2*2 - 4; end %Question 1c if x == 0 y = f(x,4); elseif x == 1 || x == 2 y = f(x,2); elseif x == -1 || x == -2 || x == -3 y = f(x,3); else y = f(x,1); end %Question 1d 1 3 7

Finals suggested solutions.pdf

Embed Size (px)

Citation preview

Page 1: Finals suggested solutions.pdf

%Question 1a

%A recursive function is a function which calls itself upon execution. %An example will be calculation of n! using a recursive function.

function out = recfact(n) %Assume n is a positive integer

if n == 1 out = 1; else out = n* recfact(n-1); end

end

%Question 1b function result = f1(mat1,mat2)

result = (mat2./mat1) + mat2*2 - 4;

end

%Question 1c

if x == 0 y = f(x,4); elseif x == 1 || x == 2 y = f(x,2); elseif x == -1 || x == -2 || x == -3 y = f(x,3); else y = f(x,1); end

%Question 1d 1 3 7

Page 2: Finals suggested solutions.pdf

%Question 2i

* *** ***** ******* ********* ***********

%Question 2ii

function func3(n)

vec = [n:-1:2 1:n]; %Descending numbers, and go back up again

for i = 1:n for j = vec if j<=i %If inner iteration is lesser than or equals row number,

print num fprintf('%d',j); else fprintf(' '); end

end fprintf('\n'); %A new line after one outer for loop iteration!

end

Page 3: Finals suggested solutions.pdf

%Question 3i

function status = isPrime(n)

if n == 1 status = logical(0); elseif n == 2 status = logical(1); else %determine by loops! status = logical(1); %By default, assume it is prime

for r = 2:floor(sqrt(n)) if rem(n,r)==0 %Oh, not so prime after all huh. status = logical(0); end end

end

end

%Question 3ii

function outvec = filter(invec)

outvec = [];

%Assume efficiency not so important, just append to make life easier. for i = 1:length(invec) if round(invec(i))== invec(i) %It is an integer if invec(i)<=0 %Negative or zeroes are kept outvec = [outvec invec(i)]; elseif isPrime(invec(i)) %Positive prime numbers are kept outvec = [outvec invec(i)]; end end

end

end

Page 4: Finals suggested solutions.pdf

%Question 4i

function outvec = insert_element(invec,n)

if n < min(invec) outvec = [n invec]; %Concatenate together else position = max(find(n>=invec)); %Find the largest index outvec = [invec(1:position) n invec(position+1:end)]; %And put n one position

after end

end

%Question 4ii function outvec = insertion_sort(invec)

outvec = [];

while length(invec)~=0 %There are still elements inside outvec = insert_element(outvec,invec(1)); invec(1) = []; end

end