我寫了一個Python程序給一個字符串的所有排列,使用回溯:Python字符串置換超出遞歸限制
class Solution(object):
def permute(self, nums):
"""
:type nums: List[int]
:rtype: List[List[int]]
"""
if nums == None or len(nums) <= 1:
return [nums]
res_lst = []
res = []
self.permuteHelper(res_lst, nums, res)
return res_lst
def permuteHelper(self, res_lst, nums, res):
if len(res) == len(nums):
res_lst.append(res)
return
for n in nums:
if n not in res:
self.permuteHelper(res_lst, nums,res+[n])
res = res[:-1] #Prune back one node
這一個總是超過最大遞歸限制。因爲在每個遞歸步驟中,我將結果列表+ [n]傳遞給下一個遞歸調用,我想它最終會達到len(res)== len(nums)。
Doe有人知道爲什麼不會發生?
請提供代碼來重現您的問題:) –