今度のは一種の数あて問題だ。
defmodule Chop do def guess(actual, a..b) do g = div(a + b, 2) _guess(actual, a..b, g) end def _guess(actual, _, g) when actual == g do IO.puts("It is " <> to_string(g)) IO.puts(g) end def _guess(actual, a.._, g) when actual < g do IO.puts("It is " <> to_string(g)) guess(actual, a..(g - 1)) end def _guess(actual, _..b, g) do IO.puts("It is " <> to_string(g)) guess(actual, (g + 1)..b) end end
^o^ > iex practice_6_6.exs Eshell V8.0 (abort with ^G) Interactive Elixir (1.3.4) - press Ctrl+C to exit (type h() ENTER for help) iex(1)> Chop.guess(273, 1..1000) It is 500 It is 250 It is 375 It is 312 It is 281 It is 265 It is 273 273 :ok
あれ、関数の戻り値が表示されちゃうな。まあ、いいか。