matlab函数的递归调用

matlab函数的递归调用

1、求n的阶乘

函数文件fact.m
function f=fact (n)
if n<=1
    f=1;
else
    f=fact (n-1)*n;   
end

脚本文件a.m
n=input('Please input n=');
s=fact (n);
disp(s)

2、斐波拉契数列

Fibonacci数列定义如下:
                f1=1
                f2=1
                fn=fn-1+fn-2   (n>2)
编写递归调用函数求Fibonacci数列的第n项,然后调用该函数验证Fibonacci数列的如下性质:
                  f1^2+f2^2+f3^2+……+fn^2=fn×fn+1

函数文件ffib.m
function f=ffib(n)
if n>2
    f=ffib(n-1)+ffib(n-2);
else
    f=1;
end

脚本文件test.m
F=[];
for k=1:20
    F=[F,ffib(k)*ffib(k)]; %追加
end
sum(F)
ffib(20)*ffib(21)

注:该性质可用如下的图形解释,等式两边分别是面积的两种算法(小面积之和=总面积)。

matlab函数的递归调用