首页 > 解决方案 > Elixir 脚本未完成

问题描述

我试图在 elixir 中实现 FizzBu​​zz。我认为它有效,但我有一些奇怪的行为,这可能是我的环境。我可以使用以下文件运行以下.exs文件,elixir fizzbuzz.exs并且在第一次运行时它会按您的预期工作。即使在第二次运行时,它也会按您的预期工作。但是,如果我等待 7 或 8 秒并再次运行它,它会在 13 或 14 处停止。它甚至可能会达到 50。我所经历的确实没有什么太一致的地方。我在第一次运行时复制了它,在两次运行之间等待两秒钟后我已经复制了它。我什至已经走了几分钟,根本无法重现它。请帮我...

IO.puts "Hello world from Elixir"

defmodule Fizzbuzz do
  def run(max) do
    run(1, max)
  end

  def run(n, max) do
    if rem(n, 3) == 0 do
      IO.puts "FIZZ"
    end

    if rem(n, 5) == 0 do
      IO.puts "BUZZ"
    end

    if rem(n, 3) != 0 && rem(n, 5) != 0 do
      IO.puts n
    end

    if n < max do
      run(n + 1, max)
    end
  end
end

Fizzbuzz.run(100)

证据

#: Elixir -v
Erlang/OTP 21 [erts-10.2] [64-bit] [smp:12:12] [ds:12:12:10] [async-threads:1]

Elixir 1.9.4 (compiled with Erlang/OTP 20)

标签: erlangelixirerlang-otp

解决方案


首先,尝试更新到当前最新版本的 Elixir 1.13

尝试使用 运行您的文件mix run <filename>,因此在您的情况下:

mix run fizzbuzz.exs

推荐阅读