Nested Recursion

In a nested recursion, a recursive function will pass a parameter as a recursive call.

Here is a recursive function - it is calling itself so it is recursive. The parameter itself is a recursive call, means unless the result of this recursive call is obtained, the call cannot be made.

A recursive call is taking a recursive call as a parameter, a recursion inside a recursion, so it is called a nested recursion.

int fun(int n) {
  if (n > 100) {
    return n - 10;
  } else {
    return fun(fun(n + 11));
  }
}

fun(95); // 91