【问题标题】:python - get next value in list sequence, recursive callpython - 获取列表序列中的下一个值,递归调用
【发布时间】:2016-06-28 13:02:51
【问题描述】:

根据排序列表获取下一个值的最简单方法是什么?

具有唯一编号的排序列表:

如果列表中没有找到数字n,则返回n+1, 如果找到,则在最后一个不破坏递增序列的数字中找到,返回num+1。

  • num=1,对于列表 [1,2,3,6] 将返回 4。李>
  • num=10,对于列表 [1,2,3,6] 将返回 11。李>
  • num=5,对于列表 [1,2,3,6] 将返回 7。李>

我很难接受递归调用,例如:

def nextn(num,listnums):
    if(num not in listnums): return num+1
    return nextn(num+1,listnums)

listnums=[1,2,3,6]
n=1
nn = nextn(n,listnums)
print("n=%d nn=%d" %(n,nn))

【问题讨论】:

  • 您的预期输出背后的逻辑是什么?
  • 如果列表中没有找到数字n,则返回n+1,如果是,则返回下一个n+1,以防它也不在列表中。
  • 所以只需将此解释添加到您的问题中。
  • 我添加了它,我的例子已经足够了。谢谢
  • 你的 if 语句检查错误的条件,见下文。实际上,您的文字也说明了这种错误情况,而不是您在示例中的意思。

标签: python recursion nextval


【解决方案1】:

您的 if 语句是错误的,它是根据您的文本而不是根据您的示例。

我发现,把 if 倒过来更容易理解:

def nextn(num,listnums):
    if (num+1 in listnums): 
        return nextn(num+1,listnums)
    else:
        return num+1

listnums=[1,2,4]
for n in range(10):
    print("n=%d nn=%d" %(n, nextn(n, listnums)))

【讨论】:

  • 您认为这也不是一个解决方案吗? :) 但它是,只是尝试
  • 我认为您可以改进答案,添加一些解释。
  • 谢谢,你说得对(我对问题发表了评论,但这里当然更好)
  • 对不起,戳,我看到你编辑了这个,但我只是在我覆盖它之后才看到......它是一样的,但我不知道如何恢复版本 3.. .
  • 不,没关系,我不知道你还在研究答案,所以我想添加最终代码,但现在你自己做了,完全没问题:)跨度>
猜你喜欢
  • 2019-05-05
  • 1970-01-01
  • 2012-12-28
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-11-07
  • 1970-01-01
相关资源
最近更新 更多