【发布时间】:2014-08-18 04:26:54
【问题描述】:
我应该编写两个功能完全相同但实现方式不同的函数。
该函数将一个正整数列表和一个正整数 n 作为输入,如果列表中的两个数字等于 n,则返回 True。否则,它返回 False。
第一个函数应该使用嵌套循环,我能够得到它。
第二个函数不应该使用嵌套循环。但是,您应该对列表进行排序,然后解决问题。
这是我为第二个功能准备的。
def pairs2(lst, n):
lst.sort()
if len(lst) == 2:
if lst[0] + lst[1] == n:
return True
else:
return False
elif len(lst) >= 3:
for i in range(len(lst) - 1):
if lst[0] + lst[i + 1] == n:
return True
lst.remove(lst[0])
pairs2(lst, n)
该函数一直有效,直到最后两行被实现。之后,它不会返回任何东西。我的功能有什么问题?
另外,它们是我不使用递归的任何其他替代方案吗?我只是想出了使用递归,因为这是我得到的第一个想法。
【问题讨论】:
-
我怀疑你的意思是
return pairs2(lst, n),而不是pairs2(lst, n),这只会把递归获得的结果扔掉..
标签: python list recursion sum combinations