УМ
Size: a a a
УМ
AK
УМ
AK
АО
АО
known = Dict(0=>0, 1=>1)
function fibonacci(n; known = known)
haskey(known, n) && return known[n]
known[n] = fibonacci(n - 1) + fibonacci(n - 2)
return known[n]
end
AK
function fibonacci(n)
if n ∈ keys(known)
return known[n]
end
res = fibonacci(n-1) + fibonacci(n-2)
known[n] = res
return res
end
AK
AK
AK
АО
default в анонимную функцию заворачивает, то всё что угодно может случиться.АО
AK
AK

AK
АО
get! назад 😊)))AK
AK
АО
function get!(t::AbstractDict{K,V}, key::K, default) where K where V
haskey(t, key) && return t[key]
t[key] = default
return t[key]
end
known = Dict(0=>0, 1=>1)
function fibonacci(n; known = known)
return get!(known, n, fibonacci(n - 1) + fibonacci(n - 2))
end
fibonacci(2)AK
julia> function foo()
println("Hello, world!")
return 10
end
foo (generic function with 1 method)
julia> known = Dict(0=>0, 1=>1)
Dict{Int64,Int64} with 2 entries:
0 => 0
1 => 1
julia> get!(known, 0, foo())
Hello, world!
0