前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >小甲鱼《零基础学习Python》课后笔记(二十二):函数——递归是神马

小甲鱼《零基础学习Python》课后笔记(二十二):函数——递归是神马

作者头像
小火柴棒
发布2019-01-11 15:19:53
5750
发布2019-01-11 15:19:53
举报
文章被收录于专栏:石开之旅石开之旅

测试题 0.递归在编程上的形式是如何表现的呢? 递归形式上就是在函数体里调用自身。如下所示:

代码语言:javascript
复制
def fun():
	return fun()

不过这样是不行的,因为没有停止条件,IDLE会一直报错,直到你按下Ctlr + C。python3默认递归的深度是100层,可以通过以下代码修改:

代码语言:javascript
复制
>>> import sys
>>> sys.setrecursionlimit(1000)

1.递归必须满足哪两个基本条件?

递归需要满足:调用自身;有停止条件。 2.思考一下,按照递归的特性,在编程中有没有不得不使用递归的情况? 例如汉诺塔,目录索引(因为你不知道目录里是否还有目录),树结构的定义等. 3.用递归去计算阶乘问题或斐波那契数列是很糟糕的算法,你知道为什么吗? 因为递归是函数调用自身,每一次调用都要进行压栈和出栈,需要很多时间和内存资源。 4.请聊一聊递归的优缺点(无需官方陈词,想到什么写什么就可以) 优点:可以使代码简洁;在解决一些问题,如汉诺塔问题时比较方便 缺点:使用上需要谨慎,因为会占用大量时间和资源;还有可能因为停止条件设置不合适而导致内存爆满。 5.拿手机拍一张“递归自拍照片” 拍这个的话需要两面镜子,那会是一个没有停止条件的递归,无限循环反射下去。

动动手

0.使用递归编写一个power()函数内建函数pow(),即power(x,y)为计算并返回x的y次幂的值。

代码语言:javascript
复制
def power(x,y):
	if y > 0:
		return x*power(x, y-1)
	else:
		return 1

测试代码及结果:

代码语言:javascript
复制
>>> for x in range(2,6):
	for y in range(6):
		print(pow(x,y) == power(x,y), end = "\t")

		
True	True	True	True	True	True	True	True	True	True	True	True	True	True	True	True	True	True	True	True	True	True	True	True	

1.使用递归编写一个函数,利用欧几里得算法求最大公约数,例如gcd(x,y)返回值为参数x和参数y的最大公约数。

代码语言:javascript
复制
def gcd(x,y):
	if y > 0:
		yushu = x%y
		x = y
		y = yushu
		return gcd(x,y)
	else:
		return x

测试代码及结果:

代码语言:javascript
复制
>>> for x in range(1,6):
	for y in range(10,16):
		print('%d,%d最大的约数是:%d' %(x,y,gcd(x,y)))

		
1,10最大的约数是:1
1,11最大的约数是:1
1,12最大的约数是:1
1,13最大的约数是:1
1,14最大的约数是:1
1,15最大的约数是:1
2,10最大的约数是:2
2,11最大的约数是:1
2,12最大的约数是:2
2,13最大的约数是:1
2,14最大的约数是:2
2,15最大的约数是:1
3,10最大的约数是:1
3,11最大的约数是:1
3,12最大的约数是:3
3,13最大的约数是:1
3,14最大的约数是:1
3,15最大的约数是:3
4,10最大的约数是:2
4,11最大的约数是:1
4,12最大的约数是:4
4,13最大的约数是:1
4,14最大的约数是:2
4,15最大的约数是:1
5,10最大的约数是:5
5,11最大的约数是:1
5,12最大的约数是:1
5,13最大的约数是:1
5,14最大的约数是:1
5,15最大的约数是:5
本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2018年08月06日,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

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

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

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