2016-12-07 30 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()

嘗試使用它