一、函数递归的实现
函数是否可以做到类似于循环?
答案是肯定可以的。我们可以采用函数的递归算法。
什么是递归?
可以理解为在定义的函数内部调用函数自己,形成一个回路。既然形成了一个回路,那么必须要有一个退出的方式。而这种退出的方式一般都是采用条件判断来实现的。
下面我们举一个实际递归的例子
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