【发布时间】:2016-06-19 14:00:22
【问题描述】:
我正在尝试编写将给定数字的唯一组合添加到列表的函数。 例如,当 input = 3 时,我希望列表包含 123、132、213、231 ... 等元素
resultss = []
def fun(number, result=''):
if len(result) == number:
return resultss.append(result)
else:
for x in range(1, number + 1):
if str(x) not in result:
result += str(x)
return fun(number, result)
fun(4)
print(resultss)
问题是,例如,这个函数只为 4 添加了第一个组合 1234。 有什么解决办法吗?
【问题讨论】:
-
只要你
return,for循环就结束了... -
while循环的效果一样吗?
-
当然。一旦你点击
return,整个功能就结束了。 -
除非这是一个学习练习,否则
itertools可以为您完成这项工作 -
如果这是一个练习,那么只需将
return语句一起删除,resultss.append(..)返回None,因此递归调用也将返回None,因此您的函数无论如何都不会返回任何内容。