前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >一个递归算法

一个递归算法

作者头像
张凝可
发布2019-08-22 10:57:46
3040
发布2019-08-22 10:57:46
举报
文章被收录于专栏:技术圈技术圈

这是为了铭记如何把代码写的漂亮。敬大神~

我最终想要得到的效果是这样的:‘

水心病 latin_name 糖化病

水心病 latin_name 蜜果病

水心病 symptoms harm plants 果心

水心病 symptoms harm plants 果面

等等

这个的思想利用动态规划来做,我们需要在判断类型的前提下来进行递归,一直找到最终的Value值,然后把当前Value值所在的路径,也就是k值记录下来。这是大神写的python代码,我要多多鞭策自己!!因为要统一编码为unicode在写入的时候.encode('utf-8')转为str写入文档,所有当我们遍历到值的所在节点的时候,实际上就是unicode类型,对其他非unicode类型的value值也统一转换为unicode类型。

代码语言:javascript
复制
def node_to_list(node, hypothesis, prefix=u''):
    if isinstance(node, int):
        node = unicode(node)
    if isinstance(node, unicode):
        node = node.replace(u',', u'COMMA')
        pstr(print_pattern.format(prefix, node, hypothesis))
        return
    elif isinstance(node, list):
        if len(node) == 0:
            return
        for item in node:
            node_to_list(item, hypothesis, prefix)
    elif isinstance(node, dict):
        if len(node) == 0:
            return
        for key in node:
            new_prefix = prefix + delimiter + key
            node_to_list(node[key], hypothesis, new_prefix)
    else:
        pstr(u'unexpected type: {}'.format(type(node)))

我觉得之所以能成功的递归,关键在于递归的每一层究竟是什么在变化,这里的node,prefix的参数设置很重要,当出现字典这种情况,改变prefix就能正常的进行递归了,递归的参数设置很重要,很重要,很重要啊

本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2017年03月17日,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档