循环仿真如何工作?
问题描述:
-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([])
返回0
- 确实
-
len([c])
返回1 + 0
- 确实
-
len([b,c])
返回1 + 1
- 确实
-
len([a,b,c])
返回1 + 2
这是否有意义?
+0
是的,它现在有意义。谢谢你解释。 –
答
二郎有一个调试器调用im()
尝试使用它
您可以定义由“模拟”是什么意思? –
我的意思是我不知道它是如何工作的。 –
对不起,但我无法理解你的问题。你能用不同的词来表达吗? –