MATLAB递归函数

MATLAB递归函数

递归函数就是函数调用自己本身,具体来说就是在一个函数模块里(设函数模块为factor.m,),存在函数(factor),这个函数(factor)用来调用函数模块(factor.m)。看下面的例子:

递归函数求n的阶层
创建函数文件factor.m

function f=factor(n)       % function 输出形参表 = 函数名(输入形参表);
if n<=1                          % 停止递归函数调用条件
   f=1;
else
   f=n*factor(n-1);
end
在这里插入代码片

设输入n=5时,即在交互式命令窗口输入
factor(5)
ans =

120

具体递归函数调用过程可以这么理解:
当输入n=5时;

f=5factor(4) ; factor(4)调用函数模块factor.m;即相当于n=4,则有:
f=factor(4)=4
factor(3) ; 同理,factor(3)调用函数模块factor.m,则有:
f=factor(3)=3factor(2) ;
f=factor(2)= 2
factor(1) ; factor(1)调用函数模块factor.m,因为 n<=1, 故得 f=1返回给f=factor(1),即f=factor(1)=1;接下来factor(1)的值返回给factor(2),一次类推,factor(2)返回给factor(3)…

将上面代码整理一下:

f=5factor(4) ; (1)
factor(4)=4
factor(3) ; (2)
factor(3)=3factor(2) ; (3)
factor(2)= 2
factor(1) ; (4)
factor(1)=1; (5)

      将过程(5)合并到(4),(4)合并到(3).........最终合并到(1)得:f=5*4*3*2*1=120

即调用过程:从(1)→(2)→(3)→(4)→(5)→(4)→(3)→(2)→(1)
为了更好的理解这个过程,我们将程序每一次的计算结果输出:
MATLAB函数文件factor.m:
function f=factor(n)
if n<=1
f=1;
else
f=n*factor(n-1);
end
f

在命令窗口输入:factor(5)
运行结果是:
f =
1
f =
2
f =
6
f =
24
f =
120
ans =
120

结论:就是递归函数调用一层一层剥开他的衣服,剥光见到皮皮虾纹身以后又让他按照剥开衣服的你顺序一层一层的穿回去。

你可能感兴趣的:(MATLAB递归函数)