Example 1: A C++ tail call.

(a)
void foo (int x)           
{                          
  ...                      
  if (x == 0) bar (x)      
  else        bar (x-5);     
}                          
                             

(b)
float foo (float a, float b)          
{                                     
  ...                                 
  return bar (a/2);                   
}