Е
Size: a a a
Е
Е
AB
LL
f, возвращающих [some_value | f(args)]LL
Е
defmodule Fib do
def calc(1), do: 1
def calc(2), do: 1
def calc(n), do: calc(n - 2) + calc(n - 1)
end
defmodule FibTail do
def calc(1), do: 1
def calc(2), do: 1
def calc(n), do: calc(n - 2, 1, 1)
def calc(0, _, n2), do: n2
def calc(n, n1, n2), do: calc(n - 1, n2, n1 + n2)
end
#IO.puts Fib.calc(100)
IO.puts FibTail.calc(100)
LL
defmodule Fib do
def calc(1), do: 1
def calc(2), do: 1
def calc(n), do: calc(n - 2) + calc(n - 1)
end
defmodule FibTail do
def calc(1), do: 1
def calc(2), do: 1
def calc(n), do: calc(n - 2, 1, 1)
def calc(0, _, n2), do: n2
def calc(n, n1, n2), do: calc(n - 1, n2, n1 + n2)
end
#IO.puts Fib.calc(100)
IO.puts FibTail.calc(100)
Е
Е
Е
Е
LL
fib(n) — n вызововfib(n) — 2^n вызововЕ
ŹR
LL
ŹR
ŹR
Е
fib(n) — n вызововfib(n) — 2^n вызововŹR
LL
body vs tail не померять