欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

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循环。

相关标签: 学习笔记 python