如何在Python中解决这个递归函数?

2024-09-29 21:28:55 发布

您现在位置:Python中文网/ 问答频道 /正文

我对运动有问题。 这是一个递归函数,在参数中我有一个dict,一个起始城市和一系列线索。 我必须返回一个包含秘密的列表(列表中的最后一项)。 从起点城市开始,然后按照线索列表,然后重复第二个城市

格言:

 {('ROMA', 'la'): [['PARIGI', 'vendita'], ['CAIRO', 'furto'], ['MOSCA', 'mata']], ('PARIGI', 'bocca'): [['BERLINO', 'diamanti'], ['CANCUN', 'cannoni']], ('CAIRO', 'bocca'): [['MILANO', 'di']], ('MOSCA', 'bocca'): [['PECHINO', 'hari']], ('BERLINO', 'sollevò'): [['PECHINO', 'rubati']], ('CANCUN', 'sollevò'): [['ROMA', 'mercato']], ('MILANO', 'sollevò'): [['PARIGI', 'diamanti']], ('PECHINO', 'sollevò'): [['MILANO', 'ha']], ('PECHINO', 'dal'): [['ROMA', 'stanotte']], ('ROMA', 'dal'): [['MOSCA', 'nero']], ('PARIGI', 'dal'): [['CAIRO', 'a']], ('MILANO', 'dal'): [['PARIGI', 'sedotto']], ('ROMA', 'fiero'): [['PARIGI', 'ad']], ('MOSCA', 'fiero'): [['BERLINO', 'del']], ('CAIRO', 'fiero'): [['CANCUN', 'buckingham']], ('PARIGI', 'fiero'): [['PECHINO', 'ambasciatore']], ('PARIGI', 'pasto'): [['CANCUN', 'anversa']], ('BERLINO', 'pasto'): [['CANCUN', 'cairo']], ('CANCUN', 'pasto'): [['MILANO', 'palace']], ('PECHINO', 'pasto'): [['MILANO', 'zambia']]}

线索:

['la', 'bocca', 'sollevò', 'dal', 'fiero', 'pasto']

初始城市:

'ROMA'

我的代码:

secret = []
def getSecret(city_dict, initial_city, clues):
    if (len(clues) == 0):
        return secret
    for clue in clues:
        if (initial_city, clue) in city_dict:
            secret.append(city_dict[(initial_city, clue)][0][1])
            return getSecret(city_dict, city_dict[(initial_city, clues[0])][0][0], clues[1:])

我的输出错误:

 ['vendita', 'diamanti', 'rubati', 'stanotte', 'ad', 'anversa']

应该是:

[['vendita', 'diamanti', 'rubati', 'stanotte', 'ad', 'anversa'],['vendita','cannoni','mercato','nero','del','cairo'],['furto','di', 'diamanti','a', 'buckingham','palace'],['mata','hari','ha','sedotto','ambasciatore','zambia']]

有什么建议吗


Tags: citydictcairodalromacluesmilanoparigi

热门问题