【发布时间】:2023-03-23 20:39:01
【问题描述】:
我很难理解以下函数的递归工作流程以及它如何遍历对排列进行排序的数组。
让我难过的一件事是“return [nums[:]]”调用在递归函数中时的行为方式。由于第 9 行在 'start == 2' 之前再次调用自身,它何时继续执行第 9 行之后的行,以及它对哪个递归函数执行这些后续行?
抱歉,如果我的问题有点令人困惑,我最近才开始学习 Python,希望更好地了解递归函数中的“返回”调用如何工作。任何建议表示赞赏!
class Solution(object):
def _permuteHelper(self, nums, start=0):
if start == len(nums) - 1:
return [nums[:]]
result = []
for i in range(start, len(nums)):
nums[start], nums[i] = nums[i], nums[start]
result += self._permuteHelper(nums, start + 1)
nums[start], nums[i] = nums[i], nums[start]
return result
def permute(self, nums):
return self._permuteHelper(nums)
print(Solution().permute([1, 2, 3]))
# [[1, 2, 3], [1, 3, 2], [2, 1, 3], [2, 3, 1], [3, 2, 1], [3, 1, 2]]
【问题讨论】:
-
return不是“电话”;这是一个声明。用来表示计算的结果是什么。它在递归中的工作方式与对任何其他函数调用的工作方式相同:递归调用评估为某个结果,然后在递归调用的地方使用该结果 - 与调用不是递归的完全相同。跨度>
标签: python arrays python-3.x recursion permutation