Моя функция same_num принимает значения, которые являются общими для обоих отсортированных списков, и добавляет их в «результат». Он использует рекурсию и два смещения, pos1 и pos2, которые всегда изначально установлены в 0, для сравнения значений в списке. При запуске функции он работает отлично в первый раз, однако, если я запустил функцию во второй раз, исходный результат добавляется с ответом, который я получил от его запуска. Где я иду не так?Выходной список Дублирующие значения
result=[]
def same_num(list1,list2,pos1,pos2):
list1=sorted(list1)
list2=sorted(list2)
if pos1==len(list1) or pos2==len(list2):
return result
if list1[pos1]==list2[pos2]:
result.append(list1[pos1])
return same_num(list1,list2,pos1+1,pos2+1)
if list1[pos1]>list2[pos2]:
return same_num(list1,list2,pos1,pos2+1)
if list1[pos1]<list2[pos2]:
return same_num(list1,list2,pos1+1,pos2)
Например:
same_num([3,1,2,4],[3,1,2,4,5,6],0,0)=>[1,2,3,4]
перезапустив предыдущий пример в оболочке производит:
same_num([3,1,2,4],[3,1,2,4,5,6],0,0)=>[1, 2, 3, 4, 1, 2, 3, 4]
, когда он должен все еще производят:
[1,2,3,4]
Вы возвращаете результат в пустой список при каждом запуске функции? – user3636636