我的函数same_num使用两个排序列表共有的值,并将它们附加到'result'上。它使用递归和两个偏移量,即始终设置为0的pos1和pos2来比较列表中的值。当运行该函数时,它第一次运行正常,但是如果我第二次运行该函数,原始结果会附加我最初运行它的答案。我哪里错了?输出列表重复值
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