Labfans是一个针对大学生、工程师和科研工作者的技术社区。 论坛首页 | 联系我们(Contact Us)
MATLAB爱好者论坛-LabFans.com
返回   MATLAB爱好者论坛-LabFans.com > 其它 > 资料存档
资料存档 资料存档
回复
 
主题工具 显示模式
旧 2019-12-14, 20:13   #1
poster
高级会员
 
注册日期: 2019-11-21
帖子: 3,006
声望力: 66
poster 正向着好的方向发展
帖子 如何在MATLAB中正确使用递归?

我有一个简单的m文件,它是作为递归函数创建的:

function[velocity] = terminal(m,c,t,vi) %inputs: % m = mass % c = coeffcient of drag % t = time % vi = initial velocity if t==18, velocity = vi+(9.8-c/m*(vi))*2; return end velocity = vi+(9.8-c/m*(vi))*2; velocity %used to print out velocity for debugging terminal(m,c,t+2,velocity); end 速度计算正确完成,因为它打印出每个递归。但是,最后返回的“ ans”是递归的第一个计算值。我的问题是如何递归正确设置matlab函数?还是可以做到,使用循环会更好吗?



回答:

忍受我,一段时间以来没有做过很多Matlab。

但是我只是简单地迭代调用您的函数:

velocity = vi for t = 0:2:18 velocity = velocity+(9.8-c/m*(velocity))*2; end 然后,对于每个t实例,它将计算给定初始速度的速度,并使用新的速度更新该值。

要使步长为2, 只需将步长添加到步长即可。

更新以回应评论



更多&回答...
poster 当前离线   回复时引用此帖
回复

主题工具
显示模式

发帖规则
不可以发表新主题
不可以发表回复
不可以上传附件
不可以编辑自己的帖子

启用 BB 代码
论坛禁用 表情符号
论坛启用 [IMG] 代码
论坛启用 HTML 代码



所有时间均为北京时间。现在的时间是 23:51


Powered by vBulletin
版权所有 ©2000 - 2025,Jelsoft Enterprises Ltd.