什么叫递归(recusive)?

你拿两个镜子互相面对着, 然后去看镜子, 会发现每个镜子中很多个镜子, 层层的嵌套, 无穷尽, 这就是一种递归!

从前有坐山, 山里有座庙, 庙里有个老和尚在给小和尚讲故事: 从前有座山.... 如果你小的时候被人忽悠听过这个故事, 这个故事是递归!


计算机机中的递归是指: 一个函数在内部自己调用自己, 这就叫函数的递归调用!

就像前面两种情况一样, 如果不发生点意外, 比如一个镜子被拿走了, 或者老和尚挂了, 则递归无穷尽.

函数递归一样, 也要有终止条件, 否则就是个死循环!


所以, 在编程中使用递归一定要注意:

  1. 一定要有结束条件.

  2. 随着递归的深入, 一定要有满足结束条件的情况发生.


使用递归计算数字的阶乘

def factorial(x):
    """计算参数的阶乘

    计算原理: x! = x * (x - 1)!
    当 x == 1 的时候直接返回 1, 而不必再去计算

    :param x:  要计算阶乘的数字
    :return:  x!
    """
    if x == 1:
        return 1
    return x * factorial(x - 1)


print(factorial(6))

递归可以大大简化我们的代码 如果你不会用递归, 写出这样的代码, 会被打死的.

Copyright © 李振超 2018 all right reserved,powered by Gitbook
该文件最后修订时间: 2018-02-25 07:12:09

results matching ""

    No results matching ""