Foxtable(狐表)用户栏目专家坐堂 → 怎样退出递归函数?


  共有2001人关注过本帖树形打印复制链接

主题:怎样退出递归函数?

帅哥哟,离线,有人找我吗?
huangxueyao
  1楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:一尾狐 帖子:443 积分:3530 威望:0 精华:0 注册:2013/2/9 12:45:00
怎样退出递归函数?  发帖心情 Post By:2018/4/19 21:16:00 [只看该作者]

通过递归函数来遍历BOM,当遇到一个子级跟最开始的父级相同时,退出遍历,直接判定BOM不合格。

我写的递归函数如下:
For Each dr As DataRow In dt1.DataRows
        Select Case style
            Case "1","2" '外购+自产
                If dr("子级编号") = father Then
                    lst ="子孙级物料" & dr("父级编号") & "的结构中含有当前父级,将会导致死循环,不能设置!"
                    Exit For
                Else
                    lst = Functions.Execute("GetBOMSon",dr("子级编号"),dr("子级来源"),father)
                End If
            Case "3","4" '分拣+转换
                If dr("父级编号") = father Then
                    lst ="子孙级物料" & dr("子级编号") & "的结构中含有当前父级,将会导致死循环,不能设置!"
                    Exit For
                Else
                    lst = Functions.Execute("GetBOMSon",dr("父级编号"),dr("父级来源"),father)
                End If
        End Select
    Next

实测发现,用exit for 无法实现需求,因为并不知道出现错误的时候已经遍历到第几层了,所以exit for 只是退出了一层的遍历,剩下的遍历还会继续。

请问应该怎么实现我的需求?


 回到顶部
帅哥哟,离线,有人找我吗?
有点甜
  2楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:版主 帖子:85326 积分:427815 威望:0 精华:5 注册:2012/10/18 22:13:00
  发帖心情 Post By:2018/4/19 21:23:00 [只看该作者]


 回到顶部