擅长:python、mysql、java
<p>这里有一种使用递归的方法:)</p>
<pre><code>def recVowelCount(i, chars_to_find='aeiou'):
if not chars_to_find:
return 0
return i.count(chars_to_find[0]) + recVowelCount(i, chars_to_find[1:])
</code></pre>
<p>现在,代码中的问题是</p>
^{pr2}$
<p>会问<code>if 'hello' in 'aeiou':</code>,这不是很有用。您需要检查<code>if i[0] in 'aeiou'</code>,其中{<cd3>}将是每次递归调用函数时<code>"hello"</code>的每个字母</p>
<p>从简单的案例开始。如果输入字符串为空会发生什么情况?你只需返回<code>0</code>对吗?在</p>
<pre><code>def recVowelCount(i):
if not i:
return 0
</code></pre>
<p>所以我们完成了一半。现在您需要考虑在<code>i</code>不是空的情况下会发生什么。如果第一个字符是元音,我们将计数<code>1</code>,然后将字符串的其余部分递归地传递到函数中</p>
<pre><code>def recVowelCount(i):
if not i:
return 0
if i[0] in 'aeiou':
count = 1
else:
count = 0
return count + recVowelCount(i[1:])
</code></pre>
<p>好吧。。可以重构一点</p>
<pre><code>def recVowelCount(i):
if not i:
return 0
count = 'aeiou'.count(i[0])
return count + recVowelCount(i[1:])
</code></pre>
<p>最后呢</p>
<pre><code>def recVowelCount(i):
if not i:
return 0
return 'aeiou'.count(i[0]) + recVowelCount(i[1:])
</code></pre>