AK
Size: a a a
AK
АО
AK
V
АО
УМ
АО
fibonacci(::Val{0}) = 0
fibonacci(::Val{1}) = 1
fibonacci(::Val{n}) where n = fibonacci(Val{n-1}()) + fibonacci(Val{n-2}())julia> fibonacci(Val{10}())
55АО
fibonacci(Val{10}()), то несчастный компилятор рекурсивно компилирует все промежуточные функции. При этом он догадывается, что функции - константы, и последующие вызовы будут занимать ровно то время, сколько компилятору потребуется на то, чтобы в таблице функций найти подходящую.АО
АО
АО
julia> @btime fibonacci(Val{100}())
0.017 ns (0 allocations: 0 bytes)
3736710778780434371УМ
fibonacci(::Val{0}) = 0
fibonacci(::Val{1}) = 1
fibonacci(::Val{n}) where n = fibonacci(Val{n-1}()) + fibonacci(Val{n-2}())julia> fibonacci(Val{10}())
55УМ
АО
АО
AZ
УМ
AZ
УМ