我的程序一直返回False,即使它已经返回True。有人知道我做错了什么以及如何解决这个问题?
(route and target are both lists)
while len(route) > 1:
for id in range(len(target)):
if route[0] == target[id]:
route_is_contained_in_other_route(route[1:],target[id+1:])
return False
if len(route)==1:
if route[0] in target:
return True
else:
return False
答案 0 :(得分:0)
return False
之后,您的功能无法继续,这就是为什么它始终如此。
答案 1 :(得分:0)
据我所知,这是一个递归函数(你遗漏了标题)。因此,您的代码不会返回任何递归调用的返回值。与此相比:
def route_is_contained_in_other_route(route, target):
while len(route) > 1:
for id in range(len(target)):
if route[0] == target[id]:
return route_is_contained_in_other_route(route[1:], target[id+1:])
return False
if len(route) == 1:
return route[0] in target
因此,如果route
中当前比较的target
元素未包含在route
中的任何位置,或者target
的最后一个元素与{的最后一次比较结果,则返回False {1}},由len(route) == 1
发出信号。
答案 2 :(得分:0)
在返回语句后,您的函数不会继续。
但是没有一个例子,很难说,这个函数应该是什么样的。 如果我不得不猜测,我想说的可能是:
while len(route) > 1:
for id in range(len(target)):
if route[0] == target[id]:
route_is_contained_in_other_route(route[1:],target[id+1:])
return True
return False
if len(route)==1:
if route[0] in target:
return True
else:
return False