Python基础之递归函数

什么是递归函数?
递归(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 

注:
递归的效率不高

你可能感兴趣的:(python)