def window_average_recursive(list1, list2, w, start=0, result=None):
    """
    Computes the window averages of two lists recursively.

    Parameters:
    - list1: First list of numbers(length n)
    - list2: Second list of numbers(length n)
    - w: Window size
    - start: Current start index of the sliding window (default is 0)
    - result: Accumulator list for the result (default is None)

    Returns:
    - A list of length n-w+1 containing the window averages.
    """
    # Initialize the result list on the first call
    if result is None:
        result = []

    # Base case: Stop recursion when the window exceeds the list bounds
    if start > len(list1) - w:
        return result

    # Compute the window averages for the current window
    window_sum = 0
    for i in range(w):
        window_sum += (list1[start + i] + list2[start + i]) / 2
    window_avg = window_sum / w
    result.append(window_avg)

    # Recursive case: Move the window by incrementing start
    return window_average_recursive(list1, list2, w, start + 1, result)

# Example Usage
list1 = [1, 2, 3, 4, 5]
list2 = [5, 4, 3, 2, 1]
w = 3
result = window_average_recursive(list1, list2, w)
print(result)
# Output: [3.0, 3.0, 3.0]

# Example Usage
list1 = [1, 2, 3, 4, 5]
list2 = [0, 2, 1, 3, 8]
w = 3
result = window_average_recursive(list1, list2, w)
print(result)
# Output: [1.5, 2.5, 4.0]