Я пытаюсь получить следующую рекурсивную функцию для работы. Предполагается найти самый большой список векторов в vspace (n), так что все векторы будут, по крайней мере, расстоянием d друг от друга. Моя текущая проблема заключается в том, что переменная золь, похоже, не ведет себя локально. По какой-то причине, когда код переходит к более ранним итерациям, переменная sol не возвращается к тому, что было в этой итерации bestCode. Есть идеи?Объем аргумента функции
rlist - функция, которая уменьшает список векторов, удаляя любые, которые слишком близки к x (меньше расстояния d).
def bestCode(n, d, sol):
best=[]
v = vspace(n)
for i in range(0, len(sol)):
v = rlist(sol[i], v, d)
if(len(v) != 0):
for i in range(0, len(v)):
sol2 = sol
sol2.append(v[i])
sol2 = bestCode(n, d, sol2)
if(len(sol2)>len(best)):
best = sol2
return best
else:
return sol
Кроме того: 'for i in range (0, len (v)): v [i]' - длинный, подверженный ошибкам способ записи 'для элемента в v: element'. –
Можете ли вы исправить отступы, чтобы этот код действительно работал? –
Возможный дубликат [Как передать переменную по ссылке?] (Http://stackoverflow.com/questions/986006/how-do-i-pass-a-variable-by-reference) – Kevin