前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >关于迭代与递归的补充

关于迭代与递归的补充

作者头像
天钧
发布2019-07-26 17:34:09
4750
发布2019-07-26 17:34:09
举报
文章被收录于专栏:渗透云笔记

递归

大家有没有想我的Python呢?这几天挖粽子,挖到自闭,还好挖到一个,大家快去补天挖粽子吧!我知道这是废话。连Python都不会挖什么粽子。那不还赶快学起。这是函数的最后一章,下一章《字典》快点学习吧,开始我们的笔记

等等,差点忘记了,为了赶时间,我只能舍弃无关的图片,但又要保障大家的质量。

一边看视频一边看笔记吧,后台回复8523获取教程视频让你们零消费,学会Python。

递归是神马

从前有座山,山里有座庙,庙里有个老和尚,正在给小和尚讲故事呢!故事是什么呢?“从前有座山,山里有座庙,庙里有个老和尚,正在给小和尚讲故事呢!故事是什么呢?‘从前有座山,山里有座庙,庙里有个老和尚,正在给小和尚讲故事呢!故事是什么呢?……’”。这个故事永远也讲不完,因为没有递归结束条件。老师讲递归时总是说,递归很简单,一个递归结束条件,一个自己调用自己。如果递归没有结束条件,那么就会无限递归下去。在编程的时候,没有递归结束条件或者递归过深,一般会造成栈溢出。 网络

怎么样理解了吗?有的同学对迭代也不了解,这里也提一下

迭代算法是用计算机解决问题的一种基本方法。 它利用计算机运算速度快、适合做重复性操作的特点,让计算机对一组指令(或一定步骤)进行重复执行,在每次执行这组指令(或这些步骤)时,都从变量的原值推出它的一个新值。为什么使用迭代而不用递归呢?很明显,使用递归时每调用一次,就需要在栈上开辟一块空间,而使用迭代就不需要了,因此,很多时候设计出了递归算法,还要想法设法修改成迭代算法。 网络

这样的解释懂了吧。

递归从原理上来讲就是不断地调用自身的一个行为,迭代就是重复同一个操作的,并从原有的值变成新值

例子

代码语言:javascript
复制
>>> def number():
...     number()
...
>>> number()
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
  File "<stdin>", line 2, in number
  File "<stdin>", line 2, in number
  File "<stdin>", line 2, in number
  File "<stdin>", line 2, in number

它会不断地重复,直到耗尽所有资源。Python出于保护防止把它玩坏,最高叠加是100层。

实例

写一个求阶乘的函数

首先你要知道什么是阶乘,如果输入一个数如5,1x2x3x4x5=120,120就是5的阶乘。

普通版本

代码语言:javascript
复制
>>> def recursion(n):
...     result = n
...     for i in range(1,n):
...             result *= i
...     return result
...
>>> recursion(5)
120

递归版本

代码语言:javascript
复制
>>> def factorial(n):
...     if n == 1:
...             return 1
...     else:
...             return n * factorial(n - 1)
...
>>> factorial(5)
120
>>>
本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2019-05-24,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 渗透云笔记 微信公众号,前往查看

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

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

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