Проблема в том, что вы возвращаетесь из функции, как только вы делаете рекурсивный вызов во вложенном списке, независимо от того, найден он или нет searched
. Таким образом, for
l oop никогда не продолжает искать в оставшейся части списка.
Вам необходимо проверить, была ли рекурсия успешной, прежде чем вернуться.
Кроме того, вам не следует изменять coordinates
на месте с append()
. В конечном итоге вы получите список всех координат, в которые вы спустились, независимо от того, была ли она успешной. Передайте новый список в качестве аргумента в рекурсии.
def searchArray(array, searched, coordinates=[]):
for i, dimension in enumerate(array):
if type(dimension) == int:
if dimension == searched:
return coordinates+[i,]
else:
found = searchArray(dimension, searched, coordinates=coordinates + [i])
if found:
return found
return None # Not found