Upload
francistsk1
View
218
Download
0
Embed Size (px)
Citation preview
%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
%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
%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
%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