MATLAB: Profiling of inefficient recursive Fibonacci series function

fibonaccihomeworkMATLABrecursion

I am asked to profile an intentionally inefficient code. Following code will overtime with a huge input:
function f = fibo(n)
if n <= 2
f = 1;
else
f = fibo(n-2) + fibo(n-1);
end
end
I used a persistente variable, to create an array that reflects the recursion calls:
function [f, trace]=fibo_trace(n,v)%with persistent variable 'trc'
persistent trc;
if isempty(trc)
trc=v;
end
if n<=2
trc=[trc n];
f=1;
else
trc=[trc n];
f=fibo_trace(n-2)+fibo_trace(n-1);
end
trace=trc;
end
That works flawlessly when I run the function with followin code:
[f trace] = fibo_trace(6,[])
And this is what the code returns:
f = 8
trace = 6 4 2 3 1 2 5 3 1 2 4 2 3 1 2,
which is OK, since the trace vector shows how inefficient the original code is. Now my problem is, it is an assigment for a MOOC platform and the solution with the persistent variable won't work because the the automated grader will run the function a number of times with random inputs and it will not clear the function. Without the persistent variable I must split the recursive calls in two code lines and I am struggling now to compute the nth fibonacci number:
Can anyone give a clue? The creation of the array works but I honestly don't know how to deal with the two recursive call lines to compute the fibonacci.

Best Answer

Perhaps something like this:
[val,vec] = fibo(6)
val = 8
vec = 1×15
8 5 3 2 1 1 1 2 1 1 3 2 1 1 1
function [f,t] = fibo(n)
if n <= 2
f = 1;
t = f;
else
[f2,t2] = fibo(n-2);
[f1,t1] = fibo(n-1);
f = f2+f1;
t = [f,t1,t2];
end
end
It might be including the 1's repeatedly, so that gives you something to debug :)