matlab求斐波拉契数列的时候遇到n比较小的时候能求出来,请看一下我的程序有问题吗?

function f = fblq_dg_memo(n)
global memo;
memo = -1 * ones(1,n);
if n == 1 || n == 2
f = 1;
elseif memo(n) == -1
memo(n) = fblq_dg_memo(n - 1) + fblq_dg_memo(n - 2);
f = memo(n);
else
f = memo(n);
end
end

一般直接判断n是不是1或2,是返回一,不是返回fib(n-1)+fib(n-2)

function x = fibo(n)
if n == 1 || n == 2
    x = 1;
else
    x = fibo(n-1) + fibo(n-2);
end

流程大概没问题,就是写得多了最后那个else可以不用