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

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

  • 25
    点赞
  • 70
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
MATLAB中,递归函数是指一个函数调用自身的过程。通过递归调用,可以将一个大型复杂的问题逐渐转化为一个与原问题相似但规模较小的问题来求解。递归函数的基本思想是将问题分解为更小的子问题,直到达到最小的问题规模并得到结果。在递归函数中,需要设定递归的终止条件,以确保递归过程能够结束。然后,在每次递归调用中,通过传入规模更小的子问题来逐步靠近最终解。在MATLAB中,可以使用递归函数求解各种问题,例如计算阶乘。使用递归函数求解阶乘可以简化代码,并且更加直观。我们可以创建一个MATLAB函数文件factor.m,其中定义一个递归函数factor(n),用于计算n的阶乘。在递归函数中,首先设定终止条件,即当n小于等于1时,返回1。然后,在每次递归调用中,计算n与factor(n-1)的乘积,并将结果返回。通过递归调用,可以一直向下逐步计算,直到达到终止条件为止。递归函数的具体代码如下所示: ```MATLAB function f=factor(n) if n<=1 f=1; else f=n*factor(n-1); end ``` 这样,我们就可以通过调用factor函数来计算任意整数n的阶乘了。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* *2* [MATLAB递归函数](https://blog.csdn.net/with_still_water/article/details/89041960)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 50%"] - *3* [3.7 matlab函数的递归调用](https://blog.csdn.net/onlyfanlala/article/details/121750649)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 50%"] [ .reference_list ]

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值