def jump(n, min_gap, right_bound, so_far=None):
    if so_far is None:
        so_far = []
if n == 0:
    yield so_far
else:
    min_x0 = 0 if not so_far else so_far[-1] + min_gap
for i in range(min_x0, right_bound):
    for child in jump(n - 1, min_gap, right_bound, so_far + [i]):
        yield child
Python: найти все наборы чисел внутри диапазона, где каждый набор содержит значения, которые находятся на расстоянии x друг от друга и не выходят за пределы диапазона