LabVIEW论坛
直播中

jf_62410640

未满1年用户 3经验值
私信 关注
[问答]

错误解决

在非重入VI中无法进行递归调用。表示非重入VI无法将本身作为子VI调用。如需实现递归调用,周期中全部VI必须可重入并且至少存在一个动态分配或共享重入VI。
  • 1709782097412.jpg

回帖(2)

roki

2024-3-13 16:43:51
帮VI设置为可重入就行
举报

刘娟

2024-3-27 17:25:36
您提到的问题确实存在。在非重入VI中,无法直接进行递归调用自身。非重入VI是指该VI在同一时间只能被一个调用者执行,无法同时被多个调用者执行。

要在非重入VI中实现递归调用,可以使用以下方法:

1. 将递归算法转换为循环算法:将递归调用的部分改为循环结构,通过迭代来实现递归的效果。这样就可以在非重入VI中进行调用。

2. 将递归调用的部分提取为一个可重入的子VI:将递归调用的逻辑单独提取为一个可重入的子VI,并通过使用动态分配或共享重入来实现递归调用。然后在非重入VI中调用该子VI。

3. 使用全局数据来实现递归效果:将递归调用所需的数据存储在全局变量中,在每次调用时更新该全局变量,并在非重入VI中使用循环结构进行调用。

以上方法都可以在非重入VI中实现递归调用的效果,选择适合您的情况的方法即可。
举报

更多回帖

发帖
×
20
完善资料,
赚取积分