I need to write a function that calculates the dot product recursively, I made it so you can calculate up to 4 dimensions, but when I try to make it recursive I get an error because of infinite recursion. I've tried setting recursion limits, but no matter the limit, it always says the limit is too low. How should I go about this?
#Dot product not recursively
def dot(L, K):
""" Calculates dot product of lists L and K
Empty lists or lists of unequal length return 0
L, K are floats or ints
"""
x = len(L) - 1
if len(L) != len(K):
return 0
if len(L) == 0:
return 0
if len(K) == 0:
return 0
elif len(L) & len(K) == 1:
return L[x]*K[x]
elif len(L) & len(K) == 2:
return L[x] * K[x] + L[x-1] * K[x-1]
elif len(L) & len(K) == 3:
return L[x] * K[x] + L[x-1] * K[x-1] + L[x-2] * K[x-2]
elif len(L) & len(K) == 4:
return L[x] * K[x] + L[x-1] * K[x-1] + L[x-2] * K[x-2] + L[x-3] * K[x-3]
#Tries (kind of, I deleted most of my code...)
# elif len(L) == len(K): #Infinite Recursion Error
# return L[x] * K[x] + (dot(L, K)-1)
# elif len(L) == len(K): #Object of Type int has no len() Error
# return L[x] * K[x] + dot(L[x-1], K[x-1])