【发布时间】:2021-04-22 00:27:51
【问题描述】:
我正在尝试使用递归在 python 列表中生成数字组合 我的代码如下
nums = [2,3,4,6]
def backtrck(temp, starting_index, nums):
if len(temp) == 2:
print(temp)
return
temp.append(nums[starting_index])
for i in range(starting_index + 1, len(nums)):
backtrck(temp, i, nums)
backtrck([], 0, nums)
由于某种原因,上面的代码无法生成正确的组合。
代码的目的:我想生成所有以索引0开头的数字组合,其长度应等于2
预期输出
[2, 3]
[2, 4]
[2, 6]
实际输出
[2, 3]
[2, 3]
[2, 3]
[2, 3]
我不明白这个递归出了什么问题,我希望有人能帮我解决这个问题
【问题讨论】:
-
您应该检查代码中的几项内容。就像
return一样,您不会返回任何内容。同样正如答案中告诉您的那样,如果您需要单次迭代,则不确定使用递归的意义何在 -
您应该使用调试器或this site 来单步调试您的代码并观察它在做什么。
-
@IgnacioAlorre
return不需要返回任何东西就可以正确使用它。函数中的return语句是停止继续解析循环。 -
如果您在使用 IDE现在是学习其调试功能或内置 Python debugger 的好时机。在程序中的关键点打印 stuff 可以帮助您跟踪正在发生或未发生的事情。 What is a debugger and how can it help me diagnose problems?