我最近才开始用python编程。这是我在编程方面的第一次经验。在
这是来自code academy的问题。我基本上需要:
"Write a function called
fizz_count
that takes a list x as input and returns the count of the string"fizz"
in that list.For example,
fizz_count(["fizz","buzz","fizz"])
should return 2. "
这是我的代码:
def fizz_count(x):
count = 0
for a in x:
if a == "fizz":
return fizz_count(x) == 1 + count
else:
return fizz_count(x) == count
但这行不通。我哪里错了?在
您似乎在使用递归编程,但您不了解该如何工作。在
您正在递归地调用函数,但递归计数要求您将问题划分为子问题;解决一个问题并将其余问题委托给递归调用,或者将集合拆分为子问题,直到您有一个知道如何解决的小集合。但是,您将尝试解决列表中所有元素的子问题,然后将整个列表传递给递归调用。这只会导致无限递归异常,因为您只查看同一个问题集。在
递归版本为:
这只查看第一个元素,并将列表其余部分的计数委托给递归调用。如果列表为空,则返回0。在
将列表分成两半是另一个选项,仅当列表为空或只有一个元素时返回:
^{pr2}$如果您想在列表上循环并以这种方式计数(不使用递归),请递增
count
,并且只在完成循环时返回:然而,最简单的解决方案是使用标准的
^{4}$list.count()
函数:就这样结束吧。在
相关问题 更多 >
编程相关推荐