Е
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
не померять