您的位置:首页 > 编程语言 > Python开发

Python基础之递归函数

2019-05-27 08:05 204 查看

什么是递归函数?
递归(recursion):
1.是一个函数
2.函数执行的过程中,自己调用自己
3.递归一定有结束调用自己的条件
4.递归效率不高
5.什么问题必须用递归?汉诺塔
6.不会死循环,有最大递归次数限制,会报错 RecursionError: maximum recursion depth exceeded while calling a Python object

So,知道了什么是递归函数,直接上代码看例子,以斐波那契数列(Fibonacci sequence)为例:
1 1 2 3 5 8 13 21 34
前两项为1,后面每一项的值为其前两项值的和
使用非递归算法求fib数列中第n项的值:

def fib1(n):
n1 = 1
n2 = 1
for i in range(n-2):
n1,n2 = n2,n1+n2
return n2

print(fib1(7))


使用递归算法求fib数列中第n项的值:

def fib2(n):
if n == 1 or n == 2:
return 1
else:
return fib2(n-2)+fib2(n-1)

print(fib2(7))

刚接触递归可能很难理解,可能看不懂代码的实现逻辑,建议使用3次调用,来分析递归调用的过程。
以fib2(4)为例

fib2(4)-->
fib2(3)+fib2(2) -->fib2(3)=fib2(2)+fib2(1),fib2(2)=1-->
fib2(2)+fib2(1)+1-->fib2(2)=1,fib2(1)=1-->
fib2(4) = (fib2(2)+fib2(1))+fib2(2)=1+1+1 = 3

注:
递归的效率不高

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: