def recurse_combine(combo_items: list, idx: int = 0) -> list:
    """Recursively expands 'combo_items' into a list of permutations.
    
        For example recurse_combine([[A, B, C], [D, E], [F]]) returns

        [[A, D, F], [A, E, F], [B, D, F], [B, E, F], [C, D, F], [C, E, F]]
    
    """
    result = []
    if idx < len(combo_items):
        recurse_result = recurse_combine(combo_items, idx + 1)
        for item in combo_items[idx]:
            for sub_item in recurse_result:
                sub_result = [item]
                sub_result.extend(sub_item)
                result.append(sub_result)
            if len(recurse_result) == 0:
                result.append([item])
    return result