【发布时间】:2019-05-06 15:59:37
【问题描述】:
我试图以一种称为电话号码字母组合的递归方式来解决这个问题。
在这个问题中,电话号码被映射到字母,对于给定的数字,询问对应于给定数字的字母组合。
dic = {
'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']
}
Input: "23"
Output: ["ad", "ae", "af", "bd", "be", "bf", "cd", "ce", "cf"].
我试图用递归函数解决它,但得到了意外的输出[""]。
def telephoneHelper(digits, index, ans):
if(index==len(digits)):
return ans
else:
tmp=[]
for letter in dic[digits[index]]:
for an in ans:
tmp.append(an+letter)
ans=tmp
telephoneHelper(digits, index+1, ans)
def telephoneNumberRec(digits):
ans=[""]
if(len(digits)!=0):
telephoneHelper(digits, 0, ans)
return ans
ans=telephoneNumberRec("23")
print(ans)
我知道有很多与此主题相关的答案,但我试图了解此代码中的问题。
【问题讨论】:
-
在
telephoneHelper函数中,需要添加return语句:return telephoneHelper(digits, index+1, ans) -
因为您的
telephoneNumberRec总是返回ans,它*总是只是ans = [""]。你没有做任何改变ans
标签: python python-3.x recursion combinations