def more_vowels(astring):
    """Solution to exercise C-4.18.

    Use recursion to write a Python function for determining if a string s has
    more vowels than consonants.
    """
    string = astring.lower()
    vowels = 'aeiou'
    n = len(string)
    vowel_count = 0

    def recurse(idx):
        nonlocal vowel_count
        if idx == n:
            return vowel_count > (n-vowel_count)  # Base case, end of string
        if string[idx] in vowels:
            vowel_count += 1
        return recurse(idx+1)

    return recurse(0)