Python智阐9-递归函数

如果一个函数在其内部调用了函数本身,那这个函数就是递归函数,这个调用的过程称为递归调用。

1、求和:1+2+3+4+......+n

按照之前学习循环、函数的方法,直接可以用一个循环解决。

def sum(n):

sum = 0

for x in range(1,n+1):

sum += x

return sum

print(sum(5))

现在我们用递归来解决这个求和问题

def sum(n):

if n == 1:

return 1

else:

return sum(n-1) + n

print(sum(5))

我们在计算sum(5)时,程序的执行过程如下:

>>>sum(4) + 5

>>>sum(3) + 4 + 5

>>>sum(2) + 3 + 4 + 5

>>>sum(1) + 2 + 3 + 4 + 5

>>>1 + 2 + 3 + 4 + 5

2、求阶乘:n! = 1 x 2 x 3 x 4x5x...... x n

def sum(n):

if n == 1:

return 1

else:

return sum(n-1) * n

print(sum(5))

3、斐波那契数列(兔子数列)

概念(摘自百度百科):斐波那契数列(Fibonacci sequence),又称黄金分割数列、因数学家列昂纳多·斐波那契(Leonardoda Fibonacci)以兔子繁殖为例子而引入,故又称为“兔子数列”,指的是这样一个数列:1、1、2、3、5、8、13、21、34、……在数学上,斐波纳契数列以如下被以递推的方法定义:F(1)=1,F(2)=1, F(n)=F(n-1)+F(n-2)(n>=3,n∈N*)在现代物理、准晶体结构、化学等领域,斐波纳契数列都有直接的应用,为此,美国数学会从1963年起出版了以《斐波纳契数列季刊》为名的一份数学杂志,用于专门刊载这方面的研究成果。

现在我们用递归来实现斐波那契数列的计算:输出斐波那契第n个数

def fib(n):

if n

return 1

else:

return fib(n - 1) + fib(n - 2)

print(fib(8)) #第8个数是21

输出:

使用递归函数的优点是定义简单,逻辑清晰。

理论上,所有的循环都可以写成递归函数,但循环的逻辑不如递归清晰。

  • 发表于:
  • 原文链接https://kuaibao.qq.com/s/20181013A16DC900?refer=cp_1026
  • 腾讯「云+社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。

扫码关注云+社区

领取腾讯云代金券