Python 使用递归从字符串中删除元音

Python 使用递归从字符串中删除元音,python,recursion,Python,Recursion,我想让我当前拥有的代码递归,这样它就会查看每个字母,并将其返回到一个空列表中。到目前为止,我有这个,并希望使它递归。感谢您的帮助 VOWELS = ("a", "e", "i", "o", "u", "A", "E", "I", "O", "U") def vowelRemoval(aString): if len(aString) == 0: return aString newString = "" for letter in aString:

我想让我当前拥有的代码递归,这样它就会查看每个字母,并将其返回到一个空列表中。到目前为止,我有这个,并希望使它递归。感谢您的帮助

VOWELS = ("a", "e", "i", "o", "u", "A", "E", "I", "O", "U")

def vowelRemoval(aString):

    if len(aString) == 0:
        return aString
    newString = ""
    for letter in aString:
        if letter not in VOWELS:
            newString += letter

    print(newString)

下面是一种递归删除字符串中元音的方法:

def remove_vowels(s):
    if not s: 
        return s
    elif s[0] in "aeiouAEIOU": 
        return remove_vowels(s[1:]) 
    return s[0] + remove_vowels(s[1:]) 

print(remove_vowels("I have an apple"))
输出:

hv n ppl

字符串是类似列表和元组的序列

这是一个递归版本,为清晰而不是速度而编写:

VOWELS = 'aeiouyAEIOUY'


def vowelRemoval(s):
    if len(s) == 0:
        return ''
    c = '' if s[0] in VOWELS else s[0]
    return c + vowelRemoval(s[1:])

print(vowelRemoval('Hello World!'))
出来
Hll-Wrld!

要生成递归函数,您通常需要一个可以直接返回结果的边缘案例和一个循环定义,其中返回的内容取决于另一个函数调用。边缘大小写可能是空字符串或少于一个字符的字符串:返回什么?循环定义将只计算一个字符,然后再次调用函数来计算字符串的其余部分。我认为您不知道递归的含义。在另一个字符串中不能有任何字符串,您希望实现什么?我希望这样,当发生元音删除时,它将遍历字符串中的每个字母并返回它。请提供一些上下文和解释以及您的答案。如需帮助,请参阅“抱歉”。这应该是一种消除元音的尾部递归方法。我写它就像我在序言中写的一样,差不多
VOWELS = 'aeiouyAEIOUY'


def vowelRemoval(s):
    if len(s) == 0:
        return ''
    c = '' if s[0] in VOWELS else s[0]
    return c + vowelRemoval(s[1:])

print(vowelRemoval('Hello World!'))