问题描述
我似乎无法在我的代码中找到错误在哪里绘制无限递归,我的基本情况似乎很好,我认为我正在正确索引。
def phoneNumberMnemonics(phoneNumber):
returnList = []
helper(phoneNumber,[],returnList)
return returnList
def helper(phoneNumber,idx,currentList,returnList):
if idx == len(phoneNumber):
returnList.append(currentList)
return
else:
digit = phoneNumber[idx]
letters = hashMap[digit]
for i in letters:
currentList.append(i)
helper(phoneNumber,idx+1,returnList)
hashMap = {'0':['0'],'1':['1'],'2':['a','b','c'],'3':['d','e','f'],'4':['g','h','i'],'5':['j','k','l'],'6':['m','n','o'],'7':['p','q','r','s'],'8':['t','u','v'],'9':['w','x','y','z']}
解决方法
当您将字母放入主列表时,不应调用您的辅助递归函数。将其移出 for
循环。
def phoneNumberMnemonics(phoneNumber):
returnList = []
helper(phoneNumber,[],returnList)
return returnList
def helper(phoneNumber,idx,currentList,returnList):
if idx == len(phoneNumber):
returnList.append(currentList)
return
else:
digit = phoneNumber[idx]
letters = hashMap[digit]
for i in letters:
currentList.append(i)
# outside for loop
helper(phoneNumber,idx + 1,returnList)
hashMap = {'0': ['0'],'1': ['1'],'2': ['a','b','c'],'3': ['d','e','f'],'4': ['g','h','i'],'5': ['j','k','l'],'6': ['m','n','o'],'7': ['p','q','r','s'],'8': ['t','u','v'],'9': ['w','x','y','z']}
print(phoneNumberMnemonics("9056661234"))
输出
[['w','z','0','j','l','m','o','1','a','c','d','f','g','i']]