I've written a python function to reverse a list, here are the two functions and their respective outputs.
Function 1
a=[1,5]
def rev(k,i):
if i==len(k)-1:
print("in base case {}".format(i))
print(a[i])
print("Return from base case")
else:
print("in else before recur call {}".format(i))
*return* rev(k,i+1)
print("in else after recur call {}".format(i))
print(a[i])
rev(a,0)
Output (Function 1)
in else before recur call 0
in base case 1
5
Return from base case
Function 2
a=[1,5]
def rev(k,i):
if i==len(k)-1:
print("in base case {}".format(i))
print(a[i])
print("Return from base case")
else:
print("in else before recur call {}".format(i))
rev(k,i+1)
print("in else after recur call {}".format(i))
print(a[i])
rev(a,0)
Outupt (Function 2)
in else before recur call 0
in base case 1
5
Return from base case
in else after recur call 0
1
In the "Function 2", when I remove return from else call and directly call the recursion function, it worked. But,why didnt it worked in first code?
In Sum of list using recursion, when we recurse we use return, so why we not using return here.
def getSum(piece):
if len(piece)==0:
return 0
else:
return piece[0] + getSum(piece[1:])
print getSum([1, 3, 4, 2, 5])