I couldnot find a logical reason as how this return statement is working. As much as i read,it should return undefined but the program takes it straight to the recursive call function below
 #include <iostream>
 using namespace std;
// Recursive function to print the pattern without any extra
// variable
void printPattern(int n)
{
 // Base case (When n becomes 0 or negative)
 if (n ==0 || n<0)
 {
    cout << n << " ";
    return;
 }
 // First print decreasing order
  cout << n << " ";
  printPattern(n-5);
 // Then print increasing order
 cout << n << " ";
 }
// Driver Program
int main()
{
int n = 16;
printPattern(n);
return 0;
}
the output of above code is
16 11 6 1 -4 1 6 11 16