Definition

Recursion 
means 
a 
function 
calls 
itself
 
inside 
the 
function 
body.
The 
function 
keeps 
on 
calling 
itself 
until 
it 
gets 
a 
return 
value 
at 
some 
point. 
And 
then 
all 
the 
functions 
that 
were 
called, 
get 
their 
respective 
return 
values.
 
Check 
the 
call_for_lunch() 
example.
def call_for_lunch(friend1) :
        print("Time for lunch?")
        def call_for_lunch(friend2) :
                print("Time for lunch?")
                return 10
        return time
#Here friend2 is the base case, as they give a return value 10, and that is passed on to friend1, and they return the same value here.

Base Case

The 
innermost 
point 
of 
recursion, 
which 
gives 
the 
first 
proper 
return 
value, 
is 
called 
the 
base
 
case
.