【发布时间】:2018-02-25 03:04:01
【问题描述】:
所以我正在学习python并试图计算一个句子中元音的数量。我想出了如何使用 count() 函数和迭代来做到这一点,但现在我正在尝试使用递归来做到这一点。当我尝试以下方法时,我收到错误“IndexError:字符串索引超出范围”。这是我的代码。
sentence = input(": ")
def count_vowels_recursive(sentence):
total = 0
if sentence[0] == "a" or sentence[0] == "e" or sentence[0] == "i" or sentence[0] == "o" or sentence[0] == "u":
total = total + 1 + count_vowels_recursive(sentence[1:])
else:
total = total + count_vowels_recursive(sentence[1:])
return the_sum
print(count_vowels_recursive(sentence))
这是我之前的两个解决方案。
def count_vowels(sentence):
a = sentence.count("a")
b = sentence.count("e")
c = sentence.count("i")
d = sentence.count("o")
e = sentence.count("i")
return (a+b+c+d+e)
def count_vowels_iterative(sentence):
a_ = 0
e_ = 0
i_ = 0
o_ = 0
u_ = 0
for i in range(len(sentence)):
if "a" == sentence[i]:
a_ = a_ + 1
elif "e" == sentence[i]:
e_ = e_ + 1
elif "i" == sentence[i]:
i_ = i_ + 1
elif "o" == sentence[i]:
o_ = o_ + 1
elif "u" == sentence[i]:
u_ = u_ + 1
else:
continue
return (a_ + e_ + i_ + o_ + u_)
【问题讨论】:
-
提示:当您的递归到达字符串末尾并尝试测试
sentence[0]时会发生什么?