【问题标题】:How does a loop simulation works?循环模拟如何工作?
【发布时间】:2017-04-21 20:22:36
【问题描述】:
-module(prac).

-export([len/1]).

len([]) -> 

   0;

len([_|T]) ->

   1 + len(T).

所以我有这段代码,它可以工作,但我不知道如何正确模拟它。

【问题讨论】:

  • 你能定义一下“模拟”是什么意思吗?
  • 我的意思是我不知道它是如何工作的。
  • 很抱歉,我无法理解您的问题。你能用不同的词来形容吗?
  • 一步一步的过程。

标签: list loops erlang


【解决方案1】:

Erlang 有一个调试器调用im()

尝试使用它

【讨论】:

    【解决方案2】:

    好的,如果您想解释为什么代码会以这种方式工作,它会是这样的。给定以下代码:

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

    如果你像len([a,b,c])一样调用len/1,那么你可以认为它执行如下:

    • 致电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

    这有意义吗?

    【讨论】:

    • 是的,现在说得通了。谢谢你的解释。
    猜你喜欢
    • 2013-03-31
    • 2010-10-19
    • 1970-01-01
    • 2021-03-04
    • 1970-01-01
    • 2012-12-03
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多