2016-12-07 27 views
2
-module(prac). 

-export([len/1]). 

len([]) -> 

    0; 

len([_|T]) -> 

    1 + len(T). 

所以我有这样的代码和它的作品,但我不知道如何正确地模拟。循环仿真如何工作?

+0

您可以定义由“模拟”是什么意思? –

+0

我的意思是我不知道它是如何工作的。 –

+0

对不起,但我无法理解你的问题。你能用不同的词来表达吗? –

回答

3

好吧,如果你正在寻找的,为什么代码工作方式是这样的解释,它是这样的。考虑下面的代码:

len([]) -> 0; 
len([_|T]) -> 1 + len(T). 

如果你打电话给len/1len([a,b,c]),那么你可以把它像执行:

  • 呼叫len([a,b,c])
  • 确实[a,b,c]比赛[]?没有
  • 确实[a,b,c]比赛[_|T]?是的,产生_ = aT = [b,c]
  • 呼叫len([b,c])
    • 确实[b,c]比赛[]?没有
    • 确实[b,c]比赛[_|T]?是的,产生_ = bT = [c]
    • 呼叫len([c])
      • 确实[c]比赛[]?没有
      • 确实[c]比赛[_|T]?是的,产生_ = cT = []
      • 呼叫len([])
        • 确实[]比赛[]?是
        • len([])返回0
      • len([c])返回1 + 0
    • len([b,c])返回1 + 1
  • len([a,b,c])返回1 + 2

这是否有意义?

+0

是的,它现在有意义。谢谢你解释。 –

0

二郎有一个调试器调用im()

尝试使用它