Python 3.x 有人能解释一下附件中的递归函数吗?

Python 3.x 有人能解释一下附件中的递归函数吗?,python-3.x,Python 3.x,我是一个完全的新手,正在自学Python3.x。我现在正在做一个递归练习,我有一个问题。下面是递归函数的一段。此功能运行良好。然而,当我取出第一条if语句时,递归函数停止工作。有人能解释一下原因吗?我只是不明白为什么第一个IF语句是必要的。多谢各位 def count_recursive(sentence): if not sentence: return 0 return (1 if sentence[0] in 'aeiouAEIOU' els

我是一个完全的新手,正在自学Python3.x。我现在正在做一个递归练习,我有一个问题。下面是递归函数的一段。此功能运行良好。然而,当我取出第一条if语句时,递归函数停止工作。有人能解释一下原因吗?我只是不明白为什么第一个IF语句是必要的。多谢各位

def count_recursive(sentence):  
      if not sentence:  
        return 0  
    return (1 if sentence[0] in 'aeiouAEIOU' else 0)+count_recursive(sentence[1:])

def main():  
    print("Recursion =", count_recursive(sentence))

main()

编写递归函数时,函数需要知道何时停止调用自身。
if not语句:return 0
块就是该基本情况。没有它,您将连续地从句子中切掉一个项目,并一次又一次地调用
count\u recursive
。顺便说一句:
非句子
如果
句子
为False-y项,则将计算为True。例如,如果它是
None
、空的
str
、空的
列表
,等等……请举一个小字符串示例,并手动了解此函数的工作原理。试着看看有没有第一个if语句会发生什么。那么这个if语句会说什么呢?是不是说输入字符串无效?我就是这么做的。我取出if语句,得到了一个error是的,您可能得到了一个
索引器
,因为您最终将一个空字符串传递给
count\u recursive
。然后,您尝试使用
语句[0]
对其进行索引,这会引发错误。在此上下文中,如果句子是空字符串,则输入第一个if语句(并返回0)。就我个人而言,如果句子==”:,我会将其改为
,因为这在实际发生的事情中更为明确。