为了账号安全,请及时绑定邮箱和手机立即绑定

递归中的真但假

递归中的真但假

月关宝盒 2022-08-02 10:50:37
我想计算我的数组中是否有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)


查看完整回答
反对 回复 2022-08-02
  • 1 回答
  • 0 关注
  • 89 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号