python之递归

Posted pydevops

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了python之递归相关的知识,希望对你有一定的参考价值。

meum = {
     北京:{
        丰台:{
            六里桥:{
                莲怡园:{},
                莲香园:{}
            },
            莲花池:{
                蓝靛厂:{},
                火器营:{}
            }
        },
        海淀: {
            五道口: {
                青鸟: {},
                清华: {}
            },
            四季青: {
                田村: {},
                张庄: {}
            }
        },
        大兴: {
            西红门: {
                星光影视园: {},
                包商银行: {}
            },
            旧宫: {
                张镇: {},
                王镇: {}
            }
        },
    },
    上海:{
        虹桥:{
            虹桥机场:{
                莲怡园:{},
                莲香园:{}
            },
            虹桥火车站:{
                候车室:{},
                站台:{}
            }
        },
        外滩: {
            城隍庙: {
                大城隍庙: {},
                小城隍庙: {}
            },
            黄浦江: {
                东口岸: {},
                西口岸: {}
            }
        },
        浦东: {
            浦东机场: {
                航站楼: {},
                停机坪: {}
            },
            浦发银行: {
                浦发张村支行: {},
                浦发总行: {}
            }
        },
    },
    辽宁:{
        鞍山:{
            台安县:{
                桓洞:{},
                西佛:{}
            },
            岫岩县:{
                岫岩乡:{},
                曲阜乡:{}
            }
        },
        盘锦: {
            盘山: {
                大洼: {},
                达牛: {}
            },
            双台子区: {
                台子营: {},
                张家镇: {}
            }
        },
        沈阳: {
            铁西: {
                兴隆大家庭: {},
                沈阳银行: {}
            },
            皇姑: {
                白塔: {},
                小学: {}
            }
        },
    }
}
def PrintMeum(dict):
    while True:
        for  k  in dict:print(k)
        key = input("请输入城市:").strip()
        if key == b or key == q:return key
        # 这里如果第一次直接入b或q则直接退出程序
        # 如果已经进入第一层,则开始递归,调用自己并传入字典第二层
        # 如果在字典第二层输入b则退出当前递归返回上一层
        # 在任何层时输入q则退出程序

        elif key in dict.keys() and dict[key]:
            # 如果输入的字典key在字典中并切输入的字典不是空字典这开始递归调用
            ret = PrintMeum(dict[key])
            # 如果输入q则退出程序并返回key
            if ret == q:
                return key
        # elif (not dict.get(key)) or (not dict[key]):
        #  如果key不存在在字典中或者字典为空时则返回第一层
        #  这部分可有可无,因为只要匹配不到任何key或者q程序会不断循环
        #     continue

PrintMeum(meum)

 

以上是关于python之递归的主要内容,如果未能解决你的问题,请参考以下文章

Java基础入门五)之方法以及递归算法

48个值得掌握的JavaScript代码片段(上)

python之内置函数匿名函数递归

Python基础之函数,递归。

python第三篇 python基础之函数,递归,内置函数

Python之如何优雅的重试