MATLAB: Approximation with loop without using built in factorial function

approximationfactorialloop

I'm supposed to write a code to approximate the exp of a number with this formula e=sumation (1/k)= 1+1+1/2+1/6+1/24+…..( for k=0 to infinity) the only input id delta which is the difference between the approximation of e and the built in value. the function stops when the difference between e(approximated ) and built in e is not more than delta. i have the following code , but it give giving back to be the first approximated value of e and first value of k . i can't use the factorial built in function.
function [e,k]= approximate_e (delta)
format long
s=exp(1);
k=0;
sn=1;
fac=1;
while (sn-s)>=abs(delta);
fac=fac *(k+1);
sn=sn+(1/fac);
k=k+1;
end
e=sn;
end
please what I'm i doing wrong here ? thanks

Best Answer

You need to add an abs call in your while condition:
abs(sn-s)
and your code works.
EDIT
This is actually a one-liner:
e = 1 + sum(1./cumprod(1:100));