我想计算我的数组中是否有k相同的连续数字例如,如果我们想检查是否有(k=)3连续数字,该函数将返回:[0,0,1,1,1,3,4,5,4,3] = true[0,0,1,2,1,3,4,5,4,3] = false我写def seq(a, n, k): if n == 1: return 0 if k <= 1: return 1 return (a[0] == a[1] and seq(a[1:], n-1, k - 1)) or seq(a[1:], n - 1, k)`但是当我调用 (seq(array, len(array), 3)) 为 [2, 0, 0, 2, -4, -4, 0, 5, 0, 65, 66, 67] 返回 1 而不是 0
1 回答

慕码人2483693
TA贡献1860条经验 获得超9个赞
看起来你正在搞砸你必须拥有的东西作为你的积累器。你应该积累的是你看到的最后一件事,以及你看到它的次数。其中等于我们正在检查的列表,是我们看到该元素的次数,并且是我们必须达到的连续元素的数量。anek
def seq(a, k):
def seq_acc(a, n, e, k):
if not a:
return n == k
if n == k:
return True
if e == a[0]:
return seq_acc(a[1:], n+1, e, k)
else:
return seq_acc(a[1:], 1, a[0], k)
if not a:
return False
else:
return seq_acc(a[1:], 1, a[0], k)
添加回答
举报
0/150
提交
取消