Python学习日记-递归函数
程序员文章站
2022-03-20 23:29:03
...
递归函数与数列问题
我们在中学阶段就遇到过数列通项问题,通项科An可写作:
An=Sn-Sn-1(Sn表示前n项的和)
移项后,可表示为:
Sn=Sn-1+An
在这里,以一个数列的前3项为例:
S3=S2+A3
S2=S1+A2
即:S3=S1+A2+A3
将Sn看做一个函数,An看做一个形式参数
那么,任何Sn都可以看成S1+参数项。参数项已知,知道S1就可求Sn。S1就是第一项,我们把具体问题中第一项的值赋给S1即可。
举个例子,利用递归函数,求1至n间整数的和
def get_sum(n):
if n == 1:
return 1
return get_sum(n - 1) + n
在这个问题中,第一项的值明显为1,因此n=1时,返回1
当然,也可写n=0,返回0
再举例,利用递归函数,求1至n间整数的阶乘
def product(n):
if n == 0:
return 1
result = product(n - 1) * n
return result
求阶乘问题中,第一项也为1,但是,这里n=0时,不可return 0 了。因为0的阶乘仍然是1,所以n=0,仍然rerurn 1。
在递归函数中,要跳出这个套娃过程,应使用return语句,而不是break语句,因为break用以跳出while、for循环。