我在 TalentBuddy 中遇到了问题,听起来像这样
到目前为止,我似乎太困惑而无法处理代码。我唯一工作的是
def longest_improvement(grades):
res = 0
for i in xrange(len(grades) - 2):
while grades[i] <= grades[i + 1]:
res += 1
i += 1
print res
但是当
17
时打印 6
,而不是 grades = [1, 7, 2, 5, 6, 9, 11, 11, 1, 6, 1]
。如何解决剩下的代码?谢谢
最佳答案
用一些老式的尾递归解决:
grades = [1, 7, 2, 5, 6, 9, 11, 11, 1, 6, 1]
def streak(grades):
def streak_rec(longest, challenger, previous, rest):
if rest == []: # Base case
return max(longest, challenger)
elif previous <= rest[0]: # Streak continues
return streak_rec(longest, challenger + 1, rest[0], rest[1:])
else: # Streak is reset
return streak_rec(max(longest, challenger), 1, rest[0], rest[1:])
return streak_rec(0, 0, 0, grades)
print streak(grades) # => 6
print streak([2]) # => 1
关于python - 查找列表中连续增加的元素数,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/20583465/