-module(prac).
-export([len/1]).
len([]) ->
0;
len([_|T]) ->
1 + len(T).
所以我有这个代码并且它有效,但我不知道如何正确地模拟它。
答案 0 :(得分:2)
好的,如果您正在寻找代码为何如此工作的解释,那就是这样的。给出以下代码:
len([]) -> 0;
len([_|T]) -> 1 + len(T).
如果您要像len/1
那样致电len([a,b,c])
,那么您可以将其视为执行:
len([a,b,c])
[a,b,c]
匹配[]
吗?无[a,b,c]
匹配[_|T]
吗?是的,屈服于_ = a
和T = [b,c]
len([b,c])
[b,c]
匹配[]
吗?无[b,c]
匹配[_|T]
吗?是的,屈服于_ = b
和T = [c]
len([c])
[c]
匹配[]
吗?无[c]
匹配[_|T]
吗?是的,屈服于_ = c
和T = []
len([])
[]
匹配[]
吗?是len([])
返回0 len([c])
返回1 + 0 len([b,c])
返回1 + 1 len([a,b,c])
返回1 + 2 这有意义吗?