Python,递归函数写不明白,小白求教。

年轻的我们,在接受着生活的五味,品味着独特的味道,我们点燃青春之火,在我们的信念里,什么都算不了,我们怀揣梦想,在属于自己的天地间任意飞翔驰骋,我们相信青春梦想掌握在我们自己手中,需要我们去创造!

老铁们,我们又见面了,今天我们接着聊python编程,不知道大家有没有注意看,python基础篇已经慢慢变得有点难度了,甚至不是看一眼就能很快理解了的,不过不用担心,小编会用最简洁易懂的方式让大部分人都能够听懂啦。闲聊时间到,下面开始正题:

while,本意为:在…期间;当…的时候 ,该语句是先判断再执行,直到判断结果为False(错误),循环中止,下面请看代码:

代码解读:首先我们定义一个变量a,并给它一个值为1,while 就是当a小于5的时候,我们执行a+1这个操作,并且把执行后的结果赋予a,然后再次判断a是否小于5,如果是的话,a就会在之前的值上继续进行+1操作,所以直到a+1等于5,这时候不小于5的时候,while语句才会停止执行,因此执行后的结果是:

接下来,我们再来看看while-else的用法:

代码解读:很明显,我们的a=2不小于2,所以不会执行a+1,而是执行别的:print(a),最后的结果是:

不知道大家还是否记得我们之前讲过的函数,递归函数通过自身反复调用来实现递归。这样讲肯定不太好懂,通俗一点就是不断的去调用自己,最后得出答案,下面请看实例:

代码解读:函数本身比较简单,传入一个数n,然后进行操作,最后print()调用这个函数并且打印出来,重点在于函数里面的:

说实话,递归函数不太好理解,但只要理解了,你就知道是什么意思了,有点像我们高中学数列求前n项和。第一次不太理解不怕,用笔算算,在对照代码看看就会了。

最后,今天的内容分享结束了,对于今天的内容,可能有一点不太好理解,小编当年学的时候也是不太理解,多写几次,多运行几次,再去对应我的结果,你就会得到答案,重在理解,如有困惑,请随时后台咨询。

还是那句老话,编程一途,重在理解,贵在实践,今日之社会,瞬息变化,多一技伴身,未尝不可,请君切记,切记!

 
  1. main中查找内建函数print压栈,将常量字符串压栈,调用函数,弹出栈顶,返回值。
  2. main中全局查找foo1压栈,将常量100、101压栈,调用函数foo1,创建栈帧。print函数压栈,字符串和变量b、b1压栈,调用函数,弹出栈顶,返回值。
  3. main中全局查找foo2函数压栈,将常量200压栈,调用foo2,创建栈帧。foo3函数压栈,变量c引用压栈,调用foo3函数,创建栈帧,foo3中内建函数中查找print压栈,将字符常量和变量d压栈。foo3完成print函数调用后返回。foo2恢复调用,执行print后,返回值,main中foo2调用结束后弹出栈顶,main继续执行print函数调用,弹出栈顶,main函数返回

 函数中压栈,执行流程。

  1. 函数直接或者间接调用自身就是递归
  2. 递归需要有边界条件、递归前进段,递归返回段
  3. 递归一定需要有边界条件
  4. 当边界条件不满足的时候,递进前进
  5. 当边界条件满足的时候,递归返回
  1. 递归一定要有退出条件,递归调用一定执行到这个退出条件。没有退出条件的递归调用,就是无限调用
  2. 递归调用的深度不宜过深
  3. python对递归调用的深度做了限制,以保护解释器,cpython中递归深度为1000,ipython中递归深度为3000
  4. 对于基于前面或者换位置的时候使用封装和解构更有效
#斐波那契数列普通循环实现
#斐波那契数列函数递归实现
 
#斐波那契数列函数循环实现

循环稍微复杂一些,但是只要不是死循环,可以多次迭代直至算出结果
递归还有深度限制,如果递归复杂,函数反复压栈,栈内存很快会溢出

 

间接递归,是通过别的函数调用了函数自身,但是如果构成了循环递归调用是非常危险的,但是往往这种情况在代码复杂的情况下,还是有可能发生这种调用的,要用代码的规范来避免这种递归调用的发生

  1. 递归是一种很自然的表达,符合逻辑思维
  2. 递归相对运行效率低,每一次调用函数都要开辟新的栈帧
  3. 递归有深度限制,如果递归层次太深,函数反复压栈,栈内存很快就溢出了
  4. 如果是有限次数的递归,可以使用递归调用,或者使用循环代替,循环代码稍微复杂一些,但是只要不是死循环,过次迭代直至算出结果
  5. 绝大多数递归,都可以使用循环实现
  6. 即使递归代码很简洁,能不用尽量不使用递归

以上所述是小编给大家介绍的python递归函数详解整合,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对脚本之家网站的支持!

我要回帖

更多关于 python中递归函数写法 的文章

 

随机推荐