gpt4 book ai didi

elixir - 计算 Elixir 中的自然数

转载 作者:行者123 更新时间:2023-12-02 15:17:18 25 4
gpt4 key购买 nike

我正在阅读 Elixir in Action 一书,但我对以下示例的工作原理感到困惑。

defmodule NaturalNums do
def print(1), do: IO.puts(1)

def print(n) do
print(n - 1)
IO.puts(n)
end
end

给出这个输出:

iex(2)> NaturalNums.print(3)
1
2
3

我感到困惑的是这个模块如何从 1 开始向上计数而不是从 3 向下计数。难道不应该先打印 3 然后打印 2 然后再打印 1 吗? 1 是最后一个,因为它停止了递归。

浏览一下这个模块的控制流程会很有帮助

最佳答案

puts 调用发生在对 print 的递归调用之后。因此,虽然传递的输入确实遵循 3、2、1 的顺序,但 puts 命令将以相反的顺序执行。大致是这样的:

  1. print(3) - 原始输入
  2. print(2) - 递归调用 print(n-1)
  3. print(1) - 递归调用 print(n-1);达到基本情况
  4. 放(1)
  5. puts(2) - 完成 print(2) 调用
  6. puts(3) - 完成 print(3) 调用

关于elixir - 计算 Elixir 中的自然数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39502799/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com