鱼C论坛

 找回密码
 立即注册
查看: 4591|回复: 27

[技术交流] 《零基础入门学习Python》22讲内容归纳

[复制链接]
发表于 2015-9-26 18:29:38 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
本帖最后由 醉酒青牛 于 2015-10-10 20:06 编辑

小牛有话说:
        各位鱼油,大家好。我是小牛,如果您已经看完或者正在看鱼神的《零基础入门学习Python》视频,想随时复习前面的知识点却又不想花太多时间和精力重翻视频,来这里《零基础入门Python学习》整理瞅瞅小牛呕心做的的视频内容的总结吧^_^,如果觉得有用的话,可以点击帖子右上角的“订阅”按钮,这样以后就能够随时看到小牛做的最新的整理了。
本期主要内容导读:
        这一期我们归纳一下鱼神第二十二讲“函数:递归是神马”。这一期里面鱼神主要是讲了递归的概念和意义,递归的一般用途,在Python中递归深度的默认值和设定深度的函数以及一个使用递归实现阶乘算法的实例。下面我们就来详细介绍一下各个知识点吧~~~~~~
1. 递归的含义和一些用途
        递归就是函数通过return语句实现自己调用自己的过程,基本上所有程序语言都有递归算法,他的重要性体现在‘一般程序员使用迭代,而天才程序员使用递归’这句话上,我们的的汉诺塔游戏的解法,树状数以及谢尔宾斯基三角形都用到了递归的思想。
2. 递归的深度和设定递归深度的函数
        在Python3中针对递归提供了程序保护机制,默认允许的递归深度是100层,而如果我们需要使用网络爬虫等需要远远超过百次的递归层数时,就需要去修改程序默认的递归深度以满足要求。设置递归深度的函数为在sys模块里面的settrecursionlimit()函数进行设置,如将递归层数设置为110层,举例说明:
>>> import sys
>>> sys.setrecursionlimit(110)
3. 利用递归算法实现一个数的阶乘,举例说明:
>>> def jiecheng(number):
        if number == 1:
                return 1
        else:
                return number*jiecheng(number-1)
>>> number = int(input('请输入一个整数:'))
请输入一个整数:5
>>> n = jiecheng(number)
>>> print('%d的阶乘为%d' %(number,n))
5的阶乘为120
4. 如何看待递归算法       
        递归很重要,但它更像是一个鬼才,在某些特殊场合合理的使用它会使得你的代码精简且高效,可谓是剑走偏方,而对于与其相对的递归算法则显得中规中矩,但是比较经用。对于大多数问题还是递归实现起来更加高效,因为递归是函数调用自身,调用函数需要入栈出栈,对于内存和CPU的消耗还是比较大的。例如对于阶乘的算法使用迭代就比递归执行效率高很多,尤其是算一个上百的数的时候,举例说明:
>>> number = int(input('请输入一个整数:'))
请输入一个整数:5
>>> digui(number)
5的阶乘是120
>>> number = int(input('请输入一个整数:'))
请输入一个整数:100
>>> digui(number)
100的阶乘是93326215443944152681699238856266700490715968264381621468592963895217599993229915608941463976156518286253697920827223758251185210916864000000000000000000000000

       

本帖被以下淘专辑推荐:

想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

 楼主| 发表于 2015-9-26 18:36:09 | 显示全部楼层
本帖最后由 醉酒青牛 于 2015-9-26 19:13 编辑

老规矩,自己顶一帖,欢迎鱼油们就这一章节的问题展开讨论,内容以视频与本节课后作业为主但不仅限于此。提的问题好的或者回答的正确的鱼油小牛会给予一定的鱼币奖励哦,大家加油,顺带祝各位鱼油中秋节快乐。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2015-9-26 20:48:00 | 显示全部楼层
O(∩_∩)O谢谢:loveliness::loveliness::loveliness::loveliness::loveliness:
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2015-10-3 07:02:52 | 显示全部楼层
顶一个~
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2015-10-8 17:57:06 | 显示全部楼层
学习了
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2015-10-8 20:39:16 | 显示全部楼层
楼主最近不更新了么
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2015-10-10 10:49:26 | 显示全部楼层

Python初学者嘿嘿,来捧个场
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2015-10-18 15:49:39 | 显示全部楼层
棒棒哒!
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2015-11-2 11:32:46 | 显示全部楼层
先支持下
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2015-11-2 23:18:05 | 显示全部楼层
这一节比较简单,但还没做习题
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2015-11-11 22:50:55 | 显示全部楼层
签到 顶一个~~~
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2015-11-25 19:48:06 | 显示全部楼层
设置递归深度的函数为在sys模块里面的settrecursionlimit()函数进行设置  默认是100
递归 好像也可以用reduce的把
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2016-3-3 11:25:23 | 显示全部楼层
初学者也学习下,嗯,阶乘这个算是明白了。就是函数调用自己本身然后再去替代,这个觉得脑子笨想不明白,用笔画画就会懂了。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2016-3-29 17:14:18 | 显示全部楼层
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2016-4-16 16:30:23 | 显示全部楼层
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2016-7-7 10:09:27 | 显示全部楼层
顶一个
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2016-8-19 09:51:03 | 显示全部楼层
递归真赞,方便快捷,可以解决很多问题
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2016-8-19 12:52:42 | 显示全部楼层
666666666666666
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2016-12-8 17:12:03 | 显示全部楼层
递归是函数调用自身,调用函数需要入栈出栈,对于内存和CPU的消耗还是比较大的。这是甲鱼大神没说啊?那迭代呢?对内存和CPU是怎样的?
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2016-12-8 21:43:56 | 显示全部楼层
def gcd(x,y):
    list1=[]
    list2=[]
    list3=[]
    for x1 in range(1,x+1):
        if x%x1==0:
            list1.append(x1)
    for y1 in range(1,y+1):
        if y%y1==0:
            list2.append(y1)

    for z in list1:
        if z in list2:
            list3.append(z)
    print(max(list3))

def gcds(m, n):    #欧几里德算法
    while n:
        m, n = n, m % n
    return m
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2024-4-24 23:58

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表