【发布时间】:2021-07-27 20:16:40
【问题描述】:
我想了解这种在字符串中查找前缀的实现,它的实现没有使用任何内置的列表函数,而是使用递归来遍历字符串。
尝试:
checkStringPrefix([C|StringTail],[C|LookupTail]) ->
checkStringPrefix(StringTail,LookupTail);
checkStringPrefix(_,[]) ->
"***";
checkStringPrefix(_String,_Lookup) ->
"".
它起作用了,函数调用自身递归地将第一个字符与尾部分开。
示例调用:
1> stringUtil:checkStringPrefix("test xxxxx", "test").
"***"
2> stringUtil:checkStringPrefix("test xxxxx", "testtt").
[]
在两个不相等的字符的情况下,最后一个函数变体被调用。 我没有完全掌握这个概念,我会很感激解释。我了解递归迭代的过程,我不明白为什么第二个变体会在正确的时刻被调用。
【问题讨论】:
标签: recursion erlang tail-recursion