Nested Recursion

Nested Recursion

 • A recursive function will pass parameter as a recursive call is called nested recursion. 

• A recursive function taking recursive call as its parameter is called nested recursion.

Pseudocode-:

void fun(int n)
  if( condition){
    _______
    _______
  fun(fun(n-1))
}

Example-:

class Test{
public static int fun(int n){
   if(n>100)
      return n-10;
  else
      return fun(fun(n+11));
}
public static void main(String[] args){
  int r=fun(95);
  System.out.print(r);
}
}


                Output is-: 91

In nested recursion, one of the arguments to the recursive function is the recursive function itself! These functions tend to grow extremely fast. A good example is the classic mathematical function, "Ackerman's function. It grows very quickly (even for small values of x and y, Ackerman n(x,y) is extremely large) and it cannot be computed with only definite iteration (a completely defined for() loop for example); it requires indefinite iteration (recursion, for example).

Ackerman's function 

int ackerman(int m, int n) {
 if (m == 0) 
return(n+1); 
else if (n == 0) 
return(ackerman(m-1,1)); 
else 
return(ackerman(m-1,ackerman(m,n-1))); 
}