前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >python中函数递归VS循环

python中函数递归VS循环

作者头像
刘金玉编程
发布2019-08-01 12:14:27
1.6K0
发布2019-08-01 12:14:27
举报
文章被收录于专栏:编程创造城市编程创造城市

知识回顾:

1.作用域。区别全局变量与局部变量之间不同。

2.函数的嵌套定义。

3.解决问题的思路

  • 以前写过的For循环

举例:输出1-10所有的数字。

for i in range(1,11):

print(i)

视频内容

本节知识视频教程

以下开始文字讲解

一、函数递归的实现

函数是否可以做到类似于循环?

答案是肯定可以的。我们可以采用函数的递归算法。

什么是递归?

可以理解为在定义的函数内部调用函数自己,形成一个回路。既然形成了一个回路,那么必须要有一个退出的方式。而这种退出的方式一般都是采用条件判断来实现的。

下面我们举一个实际递归的例子

n=1

def digui(a):

print(a)

if(a>=10):

return

a+=1

digui(a)

digui(n)

根据以上实际的例子,我们总结出函数递归使用的注意点:

  1. 函数的自我调用。
  2. 一定要有退出条件。
  3. 尽可能少用递归,因为非常消耗内存。

出题:阶层的计算,计算10!的结果,采用函数递归的方式进行计算。

如果您没有碰到过阶层的概念,请试着对以下例子进行理解。举例:

0!=1

1!=1*1

2!=2*1

3!=3*2*1

4!=4*3*2*1

。。。

10!=10*9*8*…*2*1

(此题答案在本文最后公布)

二、总结强调

1.掌握递归的定义方法。

2.掌握递归的注意事项。

3.掌握递归与for循环的联系与区别。

本节代码:

代码语言:javascript
复制
#for循环举例
# for i in range(1,11):
#     print(i)
#利用函数递归来输出1-1000之间的数字

import sys #导入sys库
sys.setrecursionlimit(8000) #设置递归深度

n=1
def digui(a):
    print(a)
    if(a>=1000):
        return
    a+=1
    digui(a)

digui(n)

答案公布:

代码语言:javascript
复制
#定义一个计算阶层的回调函数
def jieceng(n):
    if(n==1):
        return 1
    else:
        return n*jieceng((n-1))

print(jieceng(10))

执行结果:

代码语言:javascript
复制
3628800

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

本文分享自 编程创造城市 微信公众号,前往查看

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

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

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