我在 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/

10-12 18:42