What is the time complexity for this recursive function?

I have a recursive function:
int func k(int m, int n) {
if m == 0 return 1;
if n ==0 return m+1;

return k(m-1, k(m, n-1));

}

I think the answer is 2^(m+n). but I am not sure.

I am not too sure, but if you use a cache/memoization it will be O(mn), since that is the number of possible states