Vba 返回空字符串的递归函数
如何正确退出递归函数并在VBA中返回值 我有一个简单的代码可以从字符串中删除多个空格:Vba 返回空字符串的递归函数,vba,recursion,Vba,Recursion,如何正确退出递归函数并在VBA中返回值 我有一个简单的代码可以从字符串中删除多个空格: 公共函数将多个空间(作为字符串)移除为字符串 如果InStr(1,s,“,vbTextCompare)>0,则 模糊的新闻 新闻=替换 删除多个位置(新闻) 其他的 移除多个空间=s 终止 如果结束 端函数 但根据退出End或exit Function时使用的方法,我要么没有返回任何内容,要么得到一个空字符串。正确的递归函数不需要特定的退出条件。只要停止递归调用函数,它就会退出 但是,如果要显式退出,可以使
公共函数将多个空间(作为字符串)移除为字符串
如果InStr(1,s,“,vbTextCompare)>0,则
模糊的新闻
新闻=替换
删除多个位置(新闻)
其他的
移除多个空间=s
终止
如果结束
端函数
但根据退出
End
或exit Function
时使用的方法,我要么没有返回任何内容,要么得到一个空字符串。正确的递归函数不需要特定的退出条件。只要停止递归调用函数,它就会退出
但是,如果要显式退出,可以使用退出功能
然而,您的错误是,当您进行递归调用时,您需要返回递归调用的结果
公共函数将多个空间(作为字符串)移除为字符串
如果InStr(1,s,“,vbTextCompare)>0,则
模糊的新闻
新闻=替换
RemoveMultipleSpaces=RemoveMultipleSpaces(新闻)
其他的
移除多个空间=s
如果结束
端函数
正确的递归函数不需要特定的退出条件。只要停止递归调用函数,它就会退出
但是,如果要显式退出,可以使用退出功能
然而,您的错误是,当您进行递归调用时,您需要返回递归调用的结果
公共函数将多个空间(作为字符串)移除为字符串
如果InStr(1,s,“,vbTextCompare)>0,则
模糊的新闻
新闻=替换
RemoveMultipleSpaces=RemoveMultipleSpaces(新闻)
其他的
移除多个空间=s
如果结束
端函数
您的代码修改byref s
并返回结果。这不是OP所拥有的。@GSerg有效,将其调整为不修改byref。请注意,这会导致为每个递归级别存储一个字符串副本,这在处理大型字符串时会对内存造成负担。哦,这很有意义!谢谢。您的代码修改了byref s
,并返回结果。这不是OP所拥有的。@GSerg有效,将其调整为不修改byref。请注意,这会导致为每个递归级别存储一个字符串副本,这在处理大型字符串时会对内存造成负担。哦,这很有意义!非常感谢。