python-获取列表序列中的下一个值,递归调用

python-获取列表序列中的下一个值,递归调用,python,recursion,nextval,Python,Recursion,Nextval,根据排序的列表获取下一个值的最简单方法是什么 具有唯一编号的已排序列表: 如果在列表中找不到数字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

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

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


如果在列表中找不到数字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))

如果你的陈述是错误的,它是根据你的文本,但不是根据你的例子

我发现,反转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)))

您期望的输出背后的逻辑是什么?如果列表中没有找到数字n,则返回n+1,如果是,则返回下一个n+1,以防它也不在列表中。因此,只需将此解释添加到您的问题中。我添加了它,尽管我的示例已经足够了。感谢您的if语句检查了错误的条件,请参见下文。事实上,你的文章也指出了这个错误的情况,而不是你在例子中的意思。你认为这也不是一个解决方案吗?:)我想你可以改进答案,添加一些解释。谢谢,你是对的(我对这个问题发表了评论,但这里当然更好)对不起,波克,我看到你编辑了这个,但我只是在我覆盖它之后才看到。。。它是一样的,但我不知道如何恢复版本3…不,很好,我不知道你还在做答案,所以我想添加最后的代码,但现在你自己做了,这完全没问题:)