【发布时间】:2023-01-25 00:39:59
【问题描述】:
我正在尝试编写一个递归函数,其目的是找到数字列表中不存在的最小正整数。
当数字按顺序排列时,该函数工作正常,但如果它们不按顺序排列,则会产生意想不到的结果。例如,输入 [1, 2, 3] 将返回 4,这是好的,但 [1, 3, 2] 将返回 3,这是意外的。
A = [1, 2, 3]
def solution(A):
smallestpositiveinteger = recursivesearch(A)
return smallestpositiveinteger
def recursivesearch(A, integer = 1):
for number in A:
if (number == integer) :
integer += 1
recursivesearch(A, integer)
return integer
varSolution = solution(A)
print(varSolution)
【问题讨论】:
-
如果您只是要忽略它的返回值,那么递归调用该函数有什么意义呢?
-
这不适合 Python 中的递归。如果列表足够长,您将溢出堆栈。使用常规的 while 循环。
-
更糟糕的是,如果 A 有一个“洞”,它也会失败:A = [1, 2, 4] 也会产生 3。
-
对 Laerne - 此函数的目的是找到数字集中不存在的最小整数。因此,输入 [1, 2, 4] 时产生 3 正是我要找的。我不确定 jasonharper 说我忽略了返回值是什么意思
-
他的意思是
recursivesearch(A, integer)应该是return recursivesearch(A, integer)
标签: python