# Exercise 11.4 ThinkJulia

**URL:** <https://discourse.julialang.org/t/exercise-11-4-thinkjulia/73620>\
**Category:** New to Julia\
**Created:** [December 25, 2021, 5:56pm UTC](https://discourse.julialang.org/t/exercise-11-4-thinkjulia/73620 "2021-12-25T17:56:11Z")\
**Posts on this page:** 6\
**Page:** 1

<div class="post-metadata">

**Author:** ![fbal091](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/fbal091/32/31976_2.png) [@fbal091](https://discourse.julialang.org/u/fbal091)\
**Post date:** [December 25, 2021, 5:56pm UTC](https://discourse.julialang.org/t/exercise-11-4-thinkjulia/73620/1 "2021-12-25T17:56:11Z")

</div>

here’s the text of the exercise:  
Memoize the Ackermann function and see if memoization makes it possible to evaluate the function with bigger arguments.  
I understand what memoization is, and i did with the fibonacci serie. I can’t understand how can i do it with the Ackermann function since it has two arguments , and not only one as the fibonacci serie.

---

<div class="post-metadata">

**Author:** ![rikh](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/rikh/32/204104_2.png) [@rikh](https://discourse.julialang.org/u/rikh)\
**Post date:** [December 25, 2021, 6:43pm UTC](https://discourse.julialang.org/t/exercise-11-4-thinkjulia/73620/2 "2021-12-25T18:43:53Z")

</div>

Is that book advising to use Memoize.jl or something else?

`@memoize` can handle multiple arguments

---

<div class="post-metadata">

**Author:** ![fbal091](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/fbal091/32/31976_2.png) [@fbal091](https://discourse.julialang.org/u/fbal091)\
**Post date:** [December 25, 2021, 6:46pm UTC](https://discourse.julialang.org/t/exercise-11-4-thinkjulia/73620/3 "2021-12-25T18:46:57Z")

</div>

no, he’s not advising to use that package.

---

<div class="post-metadata">

**Author:** ![rikh](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/rikh/32/204104_2.png) [@rikh](https://discourse.julialang.org/u/rikh)\
**Post date:** [December 25, 2021, 6:49pm UTC](https://discourse.julialang.org/t/exercise-11-4-thinkjulia/73620/4 "2021-12-25T18:49:31Z")

</div>

Can you show your fibonacci solution? Then it’s easier for people here on the forum to expand on that for ackerman

---

<div class="post-metadata">

**Author:** ![ParadaCarleton](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/paradacarleton/32/20005_2.png) [@ParadaCarleton](https://discourse.julialang.org/u/ParadaCarleton)\
**Post date:** [December 25, 2021, 7:43pm UTC](https://discourse.julialang.org/t/exercise-11-4-thinkjulia/73620/5 "2021-12-25T19:43:29Z")

</div>

A two-argument function is (conceptually) the same as a function with a single argument, a tuple of 2 numbers. You can memoize by doing whatever you did for one-parameter functions, but using `(x, y)` as your key.

---

<div class="post-metadata">

**Author:** ![fbal091](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/fbal091/32/31976_2.png) [@fbal091](https://discourse.julialang.org/u/fbal091)\
**Post date:** [December 26, 2021, 11:06am UTC](https://discourse.julialang.org/t/exercise-11-4-thinkjulia/73620/6 "2021-12-26T11:06:30Z")

</div>

```julia
known = Dict(0=>0, 1=>1)

function fibonacci(n)
    if n ∈ keys(known)
        return known[n]
    end
    res = fibonacci(n-1) + fibonacci(n-2)
    known[n] = res
    res
end

```

that’s the fibonacci using memoization
