我的函數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