鱼C论坛

 找回密码
 立即注册
查看: 5100|回复: 29

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

[复制链接]
发表于 2015-10-10 19:49:55 | 显示全部楼层 |阅读模式

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

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

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

小牛有话说:
        各位鱼油,大家好。我是小牛,如果您已经看完或者正在看鱼神的《零基础入门学习Python》视频,想随时复习前面的知识点却又不想花太多时间和精力重翻视频,来这里《零基础入门Python学习》整理瞅瞅小牛呕心做的的视频内容的总结吧^_^,如果觉得有用的话,可以点击帖子右上角的“订阅”按钮,这样以后就能够随时看到小牛做的最新的整理了。
        另外,小牛十一回了趟家,结果就将更新耽搁了,这里对关注小牛帖子鱼油们说声抱歉了,后面小牛会尽力加快更新速度,争取在10月底更新到类和对象部分。
本期主要内容导读:
        这一期我们归纳一下鱼神第二十三讲“递归:这帮小兔崽子”。这一期里面鱼神主要是根据生小兔子故事讲解了斐波那契数列采用递归方法的实现过程,并对比了采用迭代方法实现优缺点,最后再次声明了正确使用递归的重要性。下面我们就来详细介绍一下各个知识点吧~~~~~~
1. 斐波那契数列的规律
        这里,小兔子每月的总对数呈斐波那契数列形式,具体为:
所经月数                1                2        3        4        5        6        7        8        9        10        11        12
兔子总对数             1                1        2        3        5      8        13       21     34        55        89        144
        将兔子总对数与所经月数n的关系转换为数学公式则为:
               1                         n  = 1              
F(n) =     1                          n = 2
              F(n-1) + F(n-2)     n > 2
其中n属于整数。
2. 采用递归方法实现经20个月之后的兔子总对数值
  1. def fab(n):               #定义函数,参数为月数,通过递归实现对应的兔子总对数
  2.     if n < 1:             #n值小于1时则提示‘输入错误’并返回-1
  3.         print('输入有误!')
  4.         return -1
  5.     if (n == 1) or (n == 2):#月数为1或2时返回值都为1
  6.         return 1
  7.     else:
  8.         return fab(n-1) + fab(n-2)  #月数大于2时,则返回月数减一和减二对应的兔子总数量之和
  9. result = fab(20)                     #输入月数为20时计算兔子总对数
  10. if result != -1:
  11.     print('经过20个月产生的兔子总对数为%d!' %result)
复制代码

3. 采用迭代方法实现经20个月之后的兔子总对数值
  1. def fab(n):               #定义函数,参数为月数,通过迭代实现对应的兔子总对数
  2.     n1 = 1
  3.     n2 = 1
  4.     n3 = 1
  5.     if n < 1:             #n值小于1时则提示‘输入错误’并返回-1
  6.         print('输入有误!')
  7.         return -1
  8.     while(n-2) > 0:      #月数大于2时,则进行循环
  9.         n3 = n1 + n2     #n3为n1和n2之和
  10.         n1 = n2          #将n2值赋给n1
  11.         n2 = n3          #将n3值赋给n2
  12.         n -= 1           #n自减一
  13.     return n3   
  14. result = fab(20)                     #输入月数为20时计算兔子总对数
  15. if result != -1:
  16.     print('经过20个月产生的兔子总对数为%d!' %result)
复制代码

3. 正确使用递归方法意义
        递归方法是一个双刃剑,用好了能解决很棘手的问题,例如汉诺塔游戏的解法实现,而用不好将会使得程序执行效率降低,例如上述实现斐波那契数列方法中,如果月数为35,则采用递归程序计算起来就慢多了,而迭代则瞬间计算完,虽然递归书写代码很简洁。

评分

参与人数 1荣誉 +5 鱼币 +5 贡献 +5 收起 理由
~风介~ + 5 + 5 + 5 感谢楼主无私奉献!

查看全部评分

本帖被以下淘专辑推荐:

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

使用道具 举报

发表于 2015-10-10 20:27:02 | 显示全部楼层
很详细,很简练。

评分

参与人数 1鱼币 +1 收起 理由
醉酒青牛 + 1 支持楼主!

查看全部评分

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

使用道具 举报

 楼主| 发表于 2015-10-10 22:01:45 | 显示全部楼层
remember56 发表于 2015-10-10 20:27
很详细,很简练。

感谢支持哈,给你一个鱼币聊表心意。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2015-10-11 13:25:53 | 显示全部楼层
很用心的教程,满满的存在感啊!
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2015-10-11 14:12:10 | 显示全部楼层
~风介~ 发表于 2015-10-11 13:25
很用心的教程,满满的存在感啊!

感谢版主,小牛会继续努力,直到能真正入门为止!
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2015-10-11 20:19:28 | 显示全部楼层
十一放假在家休息,断断续续地看书看视频,没找到你的更新
回来上班后,真的不敢中断,其实不累,就能各种借口休息
哎~持之以恒,把前面的好习惯抓紧找回来!
加油!!!!加油!!!!加油!!!!
重要的事情说三遍

评分

参与人数 1荣誉 +1 鱼币 +1 收起 理由
醉酒青牛 + 1 + 1 一起努力,共同进步吧。

查看全部评分

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

使用道具 举报

发表于 2015-10-12 09:55:41 | 显示全部楼层
有一阵子没来了,青牛兄又出新辑了。
一起复习,受益。

评分

参与人数 1荣誉 +1 鱼币 +1 收起 理由
醉酒青牛 + 1 + 1 一起努力吧,我也是断了一段时间,一起勉励.

查看全部评分

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

使用道具 举报

发表于 2015-10-15 15:09:18 | 显示全部楼层
不错,楼主好银{:1_1:}
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2015-10-20 22:24:19 | 显示全部楼层
楼主,可否指点一下迭代中那最后的n-=1的具体意义,小弟感激不尽
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2015-10-22 15:48:11 | 显示全部楼层
好棒!有些忘记了 回来复习一下
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2015-11-2 23:28:27 | 显示全部楼层
赞。
总是会忘记当n<1的情况,想的不全面。

递归方法求的确很慢,,我求了下50,至今还未出结果……
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2015-11-16 23:00:06 | 显示全部楼层
我自己用的这种迭代的方法实现
def f(x):
    for i in range (1,x):
        if i<2:
            d=[1,1]
        else:
            d.append((d[i-1]+d[i-2]))
    return d[x-1]
x=int (input('请输入要几月份'))
print (f(x))
递归要是看代码想他的逻辑很混乱,,,,有什么快速理解递归含义的方法吗
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2015-11-16 23:01:07 | 显示全部楼层
旋转风 发表于 2015-10-20 22:24
楼主,可否指点一下迭代中那最后的n-=1的具体意义,小弟感激不尽

n=n-1  这个意思
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2015-11-23 16:30:50 | 显示全部楼层
递归递归,归去来兮,:smile
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2015-11-25 19:51:43 | 显示全部楼层
感觉迭代比较容易理解 而递归是一个循环的过程。。脑子反应慢 得一个一个用笔写的理解着。。。数学不好的路过。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2016-3-3 15:01:54 | 显示全部楼层
怎么突然迭代理解不了呢,好不容易对递归有点了解了!!!!!!!!!!!
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2016-3-31 16:52:58 | 显示全部楼层
楼主辛苦了
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2016-3-31 21:01:53 | 显示全部楼层
不错!!!!!
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2016-4-4 19:01:45 | 显示全部楼层
不理解 n为什么要自减1,我用代码试了一下,如果改为n+=1或者没有这行代码,程序都不出结果,只是实在不明白为什么,麻烦指教一下,谢谢。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2016-4-6 19:17:07 | 显示全部楼层
感谢楼主!
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-4-19 20:59

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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