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.

questionAnswers(2)

yourAnswerToTheQuestion