前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >AI_第一部分 数据结构与算法(13.图解递归)

AI_第一部分 数据结构与算法(13.图解递归)

作者头像
python编程从入门到实践
发布2019-10-22 16:02:17
3930
发布2019-10-22 16:02:17
举报

第四阶段我们进行深度学习(AI),本部分(第一部分)主要是对底层的数据结构与算法部分进行详尽的讲解,通过本部分的学习主要达到以下两方面的效果:

1.对开发中常见的算法能应用自如,让你在跳槽找工作中“算法题”不再是阻碍你“钱途”的拦路虎。

2.我们不需要调参数的调参攻城狮,我们要做正真的自己的AI模型。

3.本部分预计40篇左右。

hello,大家好,上期有小伙伴在后台留言说,那个烧脑排序算法看不懂啊,我还加了注释,让大家fork代码后在本地单步调试还是很难理解,所以就引出了本期我们要谈论的话题--再谈递归!

经过实践,小伙伴体会到为啥面试的时候有些面试官让你当场手写这两种烧脑的算法了吧,估计大家心里想的是,这个老头坏得很!whatever,今天我们再聊聊递归,这次我们通过图以及代码的分解来让大家看看,递归到底在做什么。

由于之前的第九讲已经说过递归的基本知识,所以本节我们只分析递归是怎么完成操作的,是如何一步步迭代最终输出我们想要的结果的。

我们举一个例子,请看一下这段代码:

代码语言:javascript
复制
def digui(num):
    print(num)
    if num > 0:
        num_number = num - 1
        digui(num_number)
    else:
        print('<---->')
    print(num)

我的问题来了,请问输出的结果是什么呢?

请先不要往下看,自己思考几秒,看是否能给出自己认为真确的答案,然后再继续向下。

我给出结果:

3

2

1

0

<---->

0

1

2

3

不知道你回答正确了吗?

好的,接下来我们通过图解看一下是如何输出最终的结果的:

如果还是不能理解,我自己手动通过代码拆解写出了执行过程,大家可以看一下:

# 整个迭代过程

代码语言:javascript
复制
# digui(3):
#     print(3)
#     if 3 > 0:
#         digui(2):
#             print(2)
#             if 2 > 0:
#                 digui(1):
#                     print(1)
#                     if 1 > 0:
#                         digui(0):
#                             print(0):
#                             if 0 > 0:
#                                 digui(-1):
#                             else:
#                                 print('<--->')
#                             print(0)
#                     print(1)
#             print(2)
#     print(3)
#

好的,本期我们对于递归算法就算彻底说完了,这个也是在面试中最爱考的算法,希望大家认真对待,后续的一些算法很多都是基于本算法的思想实现的。本期的完整代码请访问我的github自行获取。地址为:https://github.com/haishiniu/Data-Structure-and-Algorithms/tree/master/recursion,如果可以,请大家fork 一下这个代码库,谢谢啦

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2019-05-05,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 python编程从入门到实践 微信公众号,前往查看

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

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

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