我正在尝试编写一段代码,它将生成一个排列,或者一些以递归方式都不同的字符系列。
def getSteps(length, res=[]):
if length == 1:
if res == []:
res.append("l")
res.append("r")
return res
else:
for i in range(0,len(res)):
res.append(res[i] + "l")
res.append(res[i] + "r")
print(res)
return res
else:
if res == []:
res.append("l")
res.append("r")
return getSteps(length-1,res)
else:
for i in range(0,len(res)):
res.append(res[i] + "l")
res.append(res[i] + "r")
print(res)
return getSteps(length-1,res)
def sanitize(length, res):
return [i for i in res if len(str(i)) == length]
print(sanitize(2,getSteps(2)))
所以这会返回
“LL”、“LR”、“RR”、“RL”或系列的一些排列。
我可以立即看到这个函数可能运行得很慢,因为我必须遍历整个数组。我试图让这个过程尽可能高效,但这是我能做到的。我知道在跑步过程中会发生一些不必要的事情,但我不知道如何让它变得更好。所以我的问题是:我会做些什么来提高效率并减少这段代码的运行时间?
编辑 = 我希望能够将此代码移植到 java 或其他语言,以便理解递归的概念,而不是使用外部库,并且在不理解的情况下解决我的问题。