所以我正在尝试自己学习python,并在做编码难题。我遇到了一个几乎要求最佳位置排队赢得比赛的人。比赛负责人把站在奇数位置的人赶走。在
例如1,2,3,4,5
它可以去掉剩下2,4的奇数位置
将摆脱剩余的零头位置,留下4个作为赢家。在
当我调试代码时,代码似乎在工作,但它返回的是[1,2,3,4,5]
,而不是预期的[4]
这是我的代码:
def findWinner(contestants):
if (len(contestants) != 1):
remainingContestants = []
for i, contestant in enumerate(contestants, 1):
if (isEven(i)):
remainingContestants.append(contestant)
findWinner(remainingContestants)
return contestants
我是不是没有看到逻辑错误,或者有什么我没有看到的东西?在
你应该用
否则,当然,你的列表永远不会更新,所以你的func总是返回contains
但是,请参阅PEP8 for style指南中的python代码:http://www.python.org/dev/peps/pep-0008/
函数可能是一个过度的杀戮…只要写下来
^{pr2}$最后,不建议使用python中的递归;请使用类似
这个怎么样:
我不知道问题的实质是什么,但我不得不=p。我不能只看到所有的工作,以找到最大的权力2比选手少,而不指出。在
或者,如果您不喜欢“人工”解决方案并希望实际执行该过程:
^{pr2}$必须将值从递归函数返回到调用函数:
否则,您将只返回原始值而不做任何更改。在
^{pr2}$相关问题 更多 >
编程相关推荐