微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

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

如何解决我在递归函数中找不到资源不足错误

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

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

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。