ClearAll[sudan]; sudan[0, x_Integer?NonNegative, y_Integer?NonNegative] := x + y; sudan[n_Integer?NonNegative, y_Integer?NonNegative, 0] := y; sudan[n_Integer?NonNegative, x_Integer?NonNegative, y_Integer?NonNegative] := sudan[n - 1, sudan[n, x, y - 1], sudan[n, x, y - 1] + y]; sudan @@@ {{0, 0, 0}, {1, 1, 1}, {1, 3, 3}, {2, 1, 1}, {2, 2, 1}, {3, 1, 1}}