import typing


def evaluate(cont_frac):
    """Computes the floating point value of a finite continued fraction
    representation.

    That is the value of ``c[0] + 1/(c[1] + 1/(c[2] + 1/(c[3] + ...)))``
    for an input ``c``.

    Example:
        For an input of ``[2,3,4]`` is ``2 + 1/(3 + 1/4) = 30/13`` expressed as
        2.3076923076923075.

    Args:
        cont_frac (Iterable[Union[int, float]]): representation of a continued
            fraction as iterable of numbers.

    Returns:
        float: the value of the continued fraction.
    """
    if isinstance(cont_frac, typing.Generator):
        cont_frac = list(cont_frac)
    if len(cont_frac) == 0:
        return 0
    fraction = 0
    for i, coefficient in enumerate(reversed(cont_frac[1:])):
        fraction = 1 / (coefficient + fraction)
    return cont_frac[0] + fraction