-2

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

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

如果列表中没有找到数字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))
4

1 回答 1

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)))
于 2016-03-13T14:56:00.877 回答