Python开发(人工智能/大数据/机器学习)

14.Python编程:递归函数

2018-04-04  本文已影响3人  TensorFlow开发者

定义一个函数时,是可以调用其他函数的。特殊地,当函数内部调用自己时,就是递归现象。说白了,就是函数自己调用自己。在递归函数中,要特别注意的是结束条件。如果没有结束条件,就造成了死循环,最终会导致内存溢出。

阶乘:factorial;
递归:recursion
# 求n阶阶乘
def factorial(n):
    # 结束条件
    if n == 1 or n == 0:
        return 1
    return n * factorial(n - 1)

print('阶乘:', factorial(5))

运行结果:

阶乘: 120

再次提示:

在递归函数中,要特别注意的是结束条件。如果没有结束条件,就造成了死循环,最终会导致内存溢出。上面例子中,如果忘记了结束条件n==1 or n==0时,就会报错了:

# 求n阶阶乘
def factorial(n):
    # 错误实例,注释掉结束条件
    # if n == 1 or n == 0:
    #     return 1

    return n * factorial(n - 1)

print('阶乘:', factorial(5))

运行结果:

  File "F:/python_projects/13recursion.py", line 9, in factorial
    return n * factorial(n - 1)
RecursionError: maximum recursion depth exceeded

意思是:递归错误:超过了最大递归深度这是上面例子中缺少结束条件造成的,导致递归函数不知何时结束调用。

小结:
本文学习Python中的递归函数。在递归函数中,要特别注意的是结束条件。Python中,缺少结束条件的递归函数,在调用时,会报:RecursionError: maximum recursion depth exceeded递归错误:超过了最大递归深度。


更多了解,可关注公众号:人人懂编程


微信公众号:人人懂编程
上一篇 下一篇

猜你喜欢

热点阅读