Produkt krzyżowy zbiorów z rekurencją
Napisałem następującą procedurę rekurencyjną, aby obliczyć iloczyn krzyżowy dwóch zbiorów.
def combine(input1,input2,output):
if len(input2)==0:
return output
else:
for num in input1:
output.append((num,input2[0]))
combine(input1,input2[1:],output)
input1=[1 2 5]
input2=[2 3]
output=[(1,2), (1,3), (2,2),(2,3),(5,2),(5,3)]
Czy jest możliwe, aby poprawić rekursję, na przykład usunąć pętlę w innym miejscu i spróbować wykonać tę samą funkcję. Patrzę na różne sposoby rozwiązania problemu.
Edytuj: Nie szukam rozwiązania z czymś wbudowanym. Szukasz sposobu, w jaki mogę wykonać rekursję inaczej, a nie używać itertools.product.