知识回顾:
1.作用域。区别全局变量与局部变量之间不同。
2.函数的嵌套定义。
3.解决问题的思路
举例:输出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)
根据以上实际的例子,我们总结出函数递归使用的注意点:
出题:阶层的计算,计算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循环的联系与区别。
本节代码:
#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)
答案公布:
#定义一个计算阶层的回调函数
def jieceng(n):
if(n==1):
return 1
else:
return n*jieceng((n-1))
print(jieceng(10))
执行结果:
3628800