Hyperoperation Golfing
JavaScript (ES6),  49  47 bytes
Takes input as (a)(b,n).

a=&gt;g=(b,n)=&gt;n*b?g(g(b-1,n),n-1):-~[b,a-1,-1][n]

Try it online!
Commented
a =&gt;                  // main function taking a
  g = (b, n) =&gt;       // g = recursive function taking b and n
    n * b ?           // if neither n nor b is equal to 0:
      g(              //   go recursive:
        g(b - 1, n),  //     b = g(b - 1, n)
        n - 1         //     decrement n
      )               //   end of recursive call
    :                 // else:
      -~[             //   this is a leaf node:
        b,            //     if n = 0, return b + 1
        a - 1,        //     if n = 1, return (a - 1) + 1 = a
        -1            //     if n = 2, return -1 + 1 = 0
      ][n]            //     if n &gt; 2, return -~undefined = 1