我在递归函数中找不到资源不足错误

问题描述

我似乎无法在我的代码中找到错误在哪里绘制无限递归,我的基本情况似乎很好,我认为我正在正确索引。

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']]