-module(prac).
-export([len/1]).
len([]) ->
0;
len([_|T]) ->
1 + len(T).
所以我有这样的代码和它的作品,但我不知道如何正确地模拟。循环仿真如何工作?
-module(prac).
-export([len/1]).
len([]) ->
0;
len([_|T]) ->
1 + len(T).
所以我有这样的代码和它的作品,但我不知道如何正确地模拟。循环仿真如何工作?
好吧,如果你正在寻找的,为什么代码工作方式是这样的解释,它是这样的。考虑下面的代码:
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([])
返回0len([c])
返回1 + 0len([b,c])
返回1 + 1len([a,b,c])
返回1 + 2这是否有意义?
是的,它现在有意义。谢谢你解释。 –
二郎有一个调试器调用im()
尝试使用它
您可以定义由“模拟”是什么意思? –
我的意思是我不知道它是如何工作的。 –
对不起,但我无法理解你的问题。你能用不同的词来表达吗? –